rsrsss/feed.xml

2513 lines
272 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0"?>
<?xml-stylesheet href="xsl/style.xsl" type="text/xsl"?>
<?xml-stylesheet href="css/fallback.css" type="text/css" alternate="yes"?>
<rss
version="2.0"
xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"
xmlns:admin="http://webns.net/mvcb/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml"
xmlns:icbm="http://postneo.com/icbm"
xmlns:nhc="https://www.nhc.noaa.gov"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ss="http://purl.org/rss/1.0/modules/servicestatus/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:webfeeds="http://webfeeds.org/rss/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xsd/rss.xsd"
xsi:schemaLocation="
http://backend.userland.com/blogChannelModule xsd/blogchannel.xsd
http://www.bloglines.com/about/specs/fac-1.0 xsd/fac.xsd
http://www.w3.org/2003/01/geo/wgs84_pos# xsd/geo.xsd
http://www.georss.org/georss https://schemas.opengis.net/georss/1.0/schema-1.1/georss.xsd
http://www.opengis.net/gml https://schemas.opengis.net/georss/1.0/schema-1.1/gmlgeorss.xsd
http://postneo.com/icbm xsd/icbm.xsd
https://www.nhc.noaa.gov xsd/nhc.xsd
http://purl.org/rss/1.0/modules/servicestatus/ xsd/servicestatus.xsd
http://purl.org/rss/1.0/modules/syndication/ xsd/syndication.xsd
http://webfeeds.org/rss/1.0 xsd/webfeeds.xsd
"
>
<channel>
<title>RSRSSS</title>
<link>https://envs.net/~lucidiot/rsrsss/feed.xml</link>
<description>Really Simple Really Simple Syndication Syndication &#8212; An&#160;RSS&#160;feed about RSS&#160;feeds</description>
<language>en</language>
<copyright>Creative Commons BY-SA 4.0 International, ~lucidiot</copyright>
<managingEditor>lucidiot@envs.net (lucidiot)</managingEditor>
<webMaster>lucidiot@envs.net (lucidiot)</webMaster>
<docs>http://www.rssboard.org/rss-specification</docs>
<ttl>10080</ttl>
<admin:errorReportsTo rdf:resource="mailto:lucidiot@envs.net" />
<admin:generatorAgent rdf:resource="https://tildegit.org/lucidiot/rsrsss/" />
<atom:link href="https://envs.net/~lucidiot/rsrsss/feed.xml" rel="self" type="application/rss+xml" />
<blogChannel:blogRoll>https://envs.net/~lucidiot/rsrsss/opml/feeds.opml</blogChannel:blogRoll>
<creativeCommons:license>https://creativecommons.org/licenses/by-sa/4.0/</creativeCommons:license>
<dc:format>application/rss+xml</dc:format>
<ss:aboutStats>https://envs.net/~lucidiot/rsrsss/feed.xml#servicestatus</ss:aboutStats>
<sy:updatePeriod>weekly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>1990-01-01T12:00+01:00</sy:updateBase>
<webfeeds:partial>false</webfeeds:partial>
<webfeeds:deprecated>false</webfeeds:deprecated>
<image>
<link>https://envs.net/~lucidiot/rsrsss/feed.xml</link>
<title>RSRSSS</title>
<url>https://envs.net/~lucidiot/rsrsss/img/image.gif</url>
<description>RSRSSS logo (an animated, glitchy RSS logo)</description>
<width>144</width>
<height>144</height>
</image>
<item>
<title>RSRSSS</title>
<pubDate>Tue, 15 Dec 2020 07:40:36 +0000</pubDate>
<guid isPermaLink="false">RSRSSS</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://envs.net/~lucidiot/rsrsss/</link>
<description>Nothing better to start off an RSS feed about RSS feeds than to make itself its first item.</description>
</item>
<item>
<title>Who needs HTML anyway?</title>
<pubDate>Wed, 16 Dec 2020 07:40:22 +0000</pubDate>
<guid isPermaLink="false">XSLT</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">XSL</category>
<description><![CDATA[
<p>I added <a href="https://envs.net/~lucidiot/rsrsss/xsl/style.xsl">an XSLT stylesheet</a> to this RSS feed! This means that when you open this feed in a web browser that does not support subscribing to RSS feeds, you will instead get a nice looking page without me ever writing actual raw HTML. In older or less common web browsers that still support RSS subscriptions (as every good web browser should), such as Pale Moon, you will still get the default page that asks you if you want to subscribe.</p>
<p>Some of my friends had mentioned adding RSS to their static site generators was hard; how about turning your index page into the RSS feed, and letting browsers generate the HTML for you?</p>
]]></description>
</item>
<item>
<title>Regular Flolloping</title>
<pubDate>Fri, 1 Jan 2021 11:04:02 +0000</pubDate>
<guid isPermaLink="false">regularflolloping</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://regularflolloping.com/rss.xml</link>
<description>
A blog from a friend on the fediverse with a rather low post frequency, but that often presents the issues of technology, of capitalism, or just of having a life using unusual approaches, often full of metaphors.
</description>
</item>
<item>
<title>javapool updates</title>
<pubDate>Sat, 9 Jan 2021 17:02:51 +0000</pubDate>
<guid isPermaLink="false">javapool</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://tilde.town/~m455/javapool.rss</link>
<description><![CDATA[
All the topic changes on an IRC channel hosted on tilde.town's internal IRC server, in which we roleplay being in a Java-related hot tub.
The channel has <a href="http://tilde.town/wiki/socializing/irc/channels/javapool.html" target="_blank">a town wiki page</a> if you want to learn about the lore.
]]></description>
</item>
<item>
<title>Things of Interest</title>
<pubDate>Mon, 18 Jan 2021 17:15:11 +0000</pubDate>
<guid isPermaLink="false">qntm</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://qntm.org/rss.php</link>
<description><![CDATA[
<p>I think I found this blog through tilde.news or lobste.rs, but I couldn't really find the source. I can't find out much about the blog's creator, other than them being a prominent SCP writer.</p>
<p>This feed indeed has some interesting things, related to SCP, sci-fi (especially time traveling), or programming. I bookmarked the <a href="https://qntm.org/perl_en">Perl introduction</a>, if I ever want to learn Perl and scare my fellow Python developers at work.</p>
]]></description>
</item>
<item>
<title>Replacing Yahoo with TinyTinyRSS in Pale Moon</title>
<pubDate>Sat, 23 Jan 2021 21:11:31 +0000</pubDate>
<guid isPermaLink="false">palemoon-tinytinyrss</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<description><![CDATA[
<p>I have been trying to avoid using Firefox and prefer Pale Moon as much as I can, in preparation for the rather pessimistic outcomes I see with <a href="https://arstechnica.com/information-technology/2020/08/firefox-maker-mozilla-lays-off-250-workers-says-covid-19-lowered-revenue/">the current management at Mozilla</a>. It works pretty well for most of my uses, although I sometimes have to fallback to Firefox when I need to use websites that rely heavily on JS and do not use compilator options that would enhance compatibility, like Imgur and GitHub. Using Pale Moon on a 11+ years old ThinkPad X201 Tablet also really shows how resource hungry the Web is.</p>
<p>Some of my favorite things with Pale Moon include <a href="https://addons.palemoon.org/addon/moonscape/">turning it into Netscape</a>, <a href="https://www.palemoon.org/sync/">sync support</a>, and built-in RSS preview and subscription support via Live Bookmarks. I however have an issue with the RSS preview: it allows you to subscribe not only via Live Feeds but also with other desktop applications that you might have installed, such as Thunderbird, or Yahoo. My issue is that I wanted to add a button to quickly subscribe on envs.net's TinyTinyRSS instance, and after various attempts I could not add it in the user interface.</p>
<p>Here comes the trusty <code>about:config</code> to the rescue! Looking up <code>yahoo</code> in the configuration values pointed me to two keys in the configuration:</p>
<dl>
<dt>browser.contentHandlers.types.0.title</dt>
<dd>Initially set to <em>My Yahoo!</em>, I changed it to <em>TinyTinyRSS</em>.</dd>
<dt>browser.contentHandlers.types.0.uri</dt>
<dd>Initially set to <code>https://add.my.yahoo.com/rss?url=%s</code>, I changed it to <code>https://rss.envs.net/public.php?op=subscribe&amp;feed_url=%s</code>. I found this URL by looking at the bookmarklets configuration in TinyTinyRSS and reading the short JS code that redirects you to TinyTinyRSS.</dd>
</dl>
<p>I initially tried to add a button next to the <em>My Yahoo!</em> one by creating two new keys, <code>.types.1.title</code> and <code>.types.1.uri</code>, but that failed. I did not yet look into the Pale Moon source code to see why this could have failed.</p>
<p>With this change, instead of Yahoo, I can quickly subscribe to anyone's RSS feeds faster than ever. This will definitely not help my backlog of 2600+ articles…</p>
]]></description>
</item>
<item>
<title>disable-output-escaping</title>
<pubDate>Sat, 23 Jan 2021 21:40:04 +0000</pubDate>
<guid isPermaLink="false">d-o-e</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">XSL</category>
<description><![CDATA[
<p>While writing the previous post about TinyTinyRSS in Pale Moon, I tried to fix an issue I still had with my XSLT: To make HTML tags in &lt;description&gt; blocks work, I had to break an important part of the RSS specification and add tags directly without escaping them. XSLT stylesheets would decode entities or CDATA blocks, and do not provide a function to selectively re-parse XML tags, so I felt I was stuck. I then found out that this bit of code could get me to output the content of a description tag without getting HTML entities, so getting raw HTML as I want it without causing bugs with Pale Moon's RSS preview or bad RSS validator warnings:</p>
<pre>&lt;xsl:value-of select="description" disable-output-escaping="yes" /&gt;</pre>
<p><code>disable-output-escaping</code> <a href="https://www.w3.org/TR/1999/REC-xslt-19991116#disable-output-escaping">is optional</a> according to the W3C specification since version 1. libxslt, Chromium and Internet Explorer do support it, but Firefox <a href="https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor/XSL_Transformations_in_Mozilla_FAQ#can_i_do_disable-output-escaping.3f">chose not to</a>, and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=98168" target="_blank">a Bugzilla ticket</a> for it will celebrate its 20th birthday this year. They do say themselves that this causes issues for RSS support, so I chose to just not care about it. If you are a Firefox user and are seeing raw, unparsed HTML tags in there, I can only suggest using another browser, or just subscribing to this feed and reading this in its home, a RSS aggregator.</p>
]]></description>
</item>
<item>
<title>Shameless Self Promotion</title>
<pubDate>Thu, 4 Feb 2021 19:57:11 +0000</pubDate>
<guid isPermaLink="false">insom</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.insom.me.uk/feed.xml</link>
<description>
A blog from a kind friend of mine that has been running for nearly 18 years, mostly covering electronics and software along with books and personal things. I don't know much about electronics but it is fascinating for me to see things being done with that anyway.
</description>
</item>
<item>
<title>OPML now available</title>
<pubDate>Thu, 4 Feb 2021 22:00:11 +0000</pubDate>
<guid isPermaLink="false">rsrsss-opml</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/feeds.opml</link>
<description><![CDATA[
<p>I added <a href="https://envs.net/~lucidiot/rsrsss/xsl/opml.xsl">yet another XSLT stylesheet</a> and there is now an OPML subscriptions file available if you are feeling lazy and want to add all the feeds I talk about here. It is built by hand using a Makefile—I need to remember to run it on every new feed…</p>
]]></description>
</item>
<item>
<title>sandcats</title>
<pubDate>Sat, 13 Feb 2021 20:57:58 +0000</pubDate>
<guid isPermaLink="false">sandcats</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://xfnw.tilde.institute/sandcats/feed.rss</link>
<description>An RSS feed from a tilde friend that I randomly stumbled upon a few weeks ago, probably on IRC or Mastodon. If you feel like you need some cute sandcat breaks in the middle of your tons of blogs in your feed reader, well there you have it!</description>
</item>
<item>
<title>Directory of directories of directories</title>
<pubDate>Sat, 13 Feb 2021 21:37:36 +0000</pubDate>
<guid isPermaLink="false">dirdirdir</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/dirdirdir.opml</link>
<description><![CDATA[
I was looking at directories of RSS feeds because I wanted to find more original feeds that I might not find easily from just browsing my friends' blogs or the rest of my small corner of the internet, then I found a few pages that listed directories of RSS feeds, so I made a directory of those directories of RSS feed directories as an OPML file. Those aren't either OPML or RSS files so they use the <code>link</code> outline type which you will probably not be able to use unless you have an <a href="http://outliners.scripting.com/" target="_blank">outline editor</a>.
]]></description>
</item>
<item>
<title>BBC Weather</title>
<pubDate>Fri, 19 Feb 2021 08:15:59 +0000</pubDate>
<guid isPermaLink="false">bbc-weather</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Weather</category>
<description><![CDATA[
<p>While I was looking for unusual RSS feeds, I stumbled upon a way to get weather RSS feeds from the <a href="https://bbc.com/weather" target="_blank">BBC Weather</a> service. If you open the page for a location, you will get a URL in this format:</p>
<pre><a href="https://www.bbc.com/weather/2644080" target="_blank">https://www.bbc.com/weather/<strong>2644080</strong></a></pre>
<p>Take this integer suffix, which is the ID of the location, and put it in one of these two URLs to get some RSS feeds:</p>
<ul>
<li>
3-day forecasts:
<a href="https://weather-broker-cdn.api.bbci.co.uk/en/forecast/rss/3day/2644080" target="_blank">
<code>https://weather-broker-cdn.api.bbci.co.uk/en/forecast/rss/3day/<strong>2644080</strong></code>
</a>
</li>
<li>
Latest observations:
<a href="https://weather-broker-cdn.api.bbci.co.uk/en/observation/rss/2644080" target="_blank">
<code>https://weather-broker-cdn.api.bbci.co.uk/en/observation/rss/<strong>2644080</strong></code>
</a>
</li>
</ul>
<p>This procedure is documented <a href="https://www.bbc.com/weather/about/17543675" target="_blank">exactly like so</a> on the BBC help pages!</p>
]]></description>
</item>
<item>
<title>fridaypostcard</title>
<pubDate>Sat, 27 Feb 2021 12:13:52 +0000</pubDate>
<guid isPermaLink="false">fridaypostcard</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tilde.town/~lucidiot/fridaypostcard.xml</link>
<description><![CDATA[
This is one of my earliest attempts at a PSP-compatible RSS feed: a feed for the <code>#fridaypostcard</code> tradition on tilde.town's IRC channel, where every Friday you can post a link to an image with this tag and a cron job picks it up. This feed does not keep track of any history at all and is cleared on every Friday. Despite my attempts, most of the images in this feed cannot be displayed on a PSP. Most image links use Imgur, which requires HTTPS, and the PSP's RSS reader does not support HTTPS at all.
]]></description>
</item>
<item>
<title>WordPress feeds</title>
<pubDate>Wed, 17 Mar 2021 11:54:11 +0000</pubDate>
<guid isPermaLink="false">wordpress</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://wordpress.org/support/article/wordpress-feeds/</link>
<description><![CDATA[
<p>WordPress sites natively have support for RSS 1.0, RSS 2.0 and Atom feeds, and they have some docs to help you find them. Even if the website does not advertise them, you can try adding some URL parameters or changing some paths:</p>
<table>
<thead>
<tr>
<th>Feed type</th>
<th>URL parameters</th>
<th>URL rewriting</th>
</tr>
</thead>
<tbody>
<tr>
<td>All posts</td>
<td><code>/?feed=rss2</code></td>
<td><code>/feed/rss2/</code></td>
</tr>
<tr>
<td>All comments</td>
<td><code>/?feed=comments-rss2</code></td>
<td><code>/comments/feed/rss2/</code></td>
</tr>
<tr>
<td>Comments on a post</td>
<td><code>/?p=42&amp;feed=rss2</code></td>
<td><code>/[post name]/feed/rss2/</code></td>
</tr>
<tr>
<td>In categories</td>
<td><code>/?cat=1,2,3&amp;feed=rss2</code></td>
<td><code>/category/cat1,cat2,cat3/feed/rss2/</code></td>
</tr>
<tr>
<td>In tags</td>
<td><code>/?tag=tag1,tag2,tag3&amp;feed=rss2</code></td>
<td><code>/tag/tag1,tag2,tag3/feed/rss2/</code></td>
</tr>
<tr>
<td>In all categories</td>
<td><code>/?cat=1+2+3&amp;feed=rss2</code></td>
<td><code>/category/cat1+cat2+cat3/feed/rss2/</code></td>
</tr>
<tr>
<td>In tags</td>
<td><code>/?tag=tag1+tag2+tag3&amp;feed=rss2</code></td>
<td><code>/tag/tag1+tag2+tag3/feed/rss2/</code></td>
</tr>
<tr>
<td>By author</td>
<td>Undocumented</td>
<td><code>/author/[name]/feed/rss2/</code></td>
</tr>
<tr>
<td>Search results</td>
<td><code>?s=[query]&amp;feed=rss2</code></td>
<td>&mdash;</td>
</tr>
</tbody>
</table>
<p>Replace <code>rss2</code> with <code>atom</code> for an Atom feed, and with <code>rdf</code> for an RSS 1.0 feed.</p>
<p>I added a distinction between RSS 1.0 and RSS 2.0 in <a href="https://tilde.town/~lucidiot/itsb/" target="_blank">ITSB</a> and used it to provide more official feeds from the Antigua and Barbuda Department of Marine Services and Merchant Shipping Inspection and Investigation Division and the mongolian Air Accidents Investigation Bureau.</p>
]]></description>
</item>
<item>
<title>Replying to other people in RSS feeds</title>
<pubDate>Thu, 25 Mar 2021 22:09:27 +0100</pubDate>
<guid isPermaLink="false">mod_annotation</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>http://web.archive.org/web/20090129072752/http://web.resource.org/rss/1.0/modules/annotation/</link>
<description><![CDATA[
<p>On <a href="https://gemini.circumlunar.space/" target="_blank">Project Gemini</a>, a protocol in-between HTTP and Gopher, a new community has developed and a lot of original content is being published, relative to Gopher at least. The project sparked renewed interest in those almost-text-only protocols, sometimes offered as alternatives to the web.</p>
<p>Most people just make blogs on there, called gemlogs. Those gemlogs are frequently practicing a habit that has been disappearing from blogs faster than the blogs themselves disappeared in favor of social media: posts that reply to other people's posts.</p>
<p>I like email as a discussion method because it works like letters, just with some faster delivery and cheaper postage cost; no typing notifications and no expectations of a very fast reply like on instant messaging platforms, so you have less anxiety and more time to write out your thoughts. the UI of most email clients encourage you to write more, to not just send one line; the text length limit probably exists due to technical limitations, but you wouldn't be able to reach it without writing book after book in a single email. twitter is probably the worst place to debate on, since having much less space to explain yourself means your thoughts immediately get misinterpreted.</p>
<p>Replying to other people's posts on your own blog or gemlog is basically like e-mail, but the discussion can be read by a lot more people. you get all the benefits of long-form writing and asynchronous communication, combined with sharing with or receiving knowledge from your readers and other people's readers. However, you can hit an issue where the person who posted the text you replied to might be completely unaware of your reply, and might never read it, unlike email. some standards exist to help with this, such as <a href="https://en.wikipedia.org/wiki/Webmention" target="_blank">Webmentions</a>, or the <a href="https://www.rssboard.org/trackback" target="_blank">trackback namespace</a> for RSS.</p>
<p>I will let you click the link to read more about trackback; because I am posting today to show you an alternative, if you want to use something that approximatively nothing supports: <a href="http://web.archive.org/web/20090129072752/http://web.resource.org/rss/1.0/modules/annotation/" target="_blank">mod_annotation</a>, a proposed RSS 1.0 module. This, like most RSS 1.0 modules, never reached a status of standard module and disappeared from the Internet, so the only way to find them now is to use the Wayback Machine. I love the Wayback Machine.</p>
<p>To use this module, first add a new XML namespace to your feed: <code>xmlns:annotate="http://purl.org/rss/1.0/modules/annotate/"</code>. Then, in the <code>&lt;item&gt;</code> tag, add the following tag to reference something else:</p>
<pre><code>&lt;annotate:reference rdf:resource="https://envs.net/~lucidiot/rsrsss/"/&gt;</code></pre>
<p>This module was only proposed for RSS 1.0, but most feed readers barely make any distinction between RSS 1.0 and 2.0, so if a feed reader ever supported this module, you could probably use it safely in RSS 2.0 too.</p>
]]></description>
</item>
<item>
<title>Replying to other people in Atom feeds</title>
<pubDate>Fri, 26 Mar 2021 19:05:18 +0100</pubDate>
<guid isPermaLink="false">atom-threading</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://tools.ietf.org/html/rfc4685</link>
<description><![CDATA[
<p>A continuation of yesterday's post on replies in RSS feeds, due to a simple question: how about Atom?</p>
<p>Turns out <a href="https://tools.ietf.org/html/rfc4685" target="_blank">RFC 4685</a> defines an XML namespace one can use to define replies. It is rather similar to yesterday's mod_annotation.</p>
<p>To use this namespace, you will need to first add the namespace to your feed: <code>xmlns:thr="http://purl.org/syndication/thread/1.0"</code>. You then have access to two new elements and two new attributes, and the spec also defines a new <code>rel</code> value:</p>
<ul>
<li><code>&lt;thr:in-reply-to&gt;</code> to indicate what you are replying to using the ID indicated in the <code>&lt;id&gt;</code> tag;</li>
<li><code>&lt;link rel="replies"&gt;</code> to point to a page where some, or all, known replies to a post are listed;</li>
<li><code>thr:updated</code> to add on the above link the last date when the page was updated;</li>
<li><code>thr:count</code> to add on the above link the number of known replies listed in the linked page;</li>
<li><code>&lt;thr:total&gt;</code> to indicate the <strong>total</strong> number of known replies, as the linked replies pages might only contain a portion of them.</li>
</ul>
<p>None of those are required. You can repeat the <code>&lt;link rel="replies" /&gt;</code> as many times as you might need, if you have multiple pages. The metadata given by the <code>&lt;thr:total&gt;</code> element and the <code>thr:count</code> and <code>thr:updated</code> attributes is non-authoritative, which means it does not have to be exact.</p>
<p>If you are using <code>&lt;thr:in-reply-to&gt;</code>, it is recommended to also include the post's link in a <code>&lt;link rel="related"&gt;</code> to allow a graceful fallback for feed readers that might not support the threading extensions.</p>
<p><a href="https://tools.ietf.org/html/rfc4685" target="_blank">The RFC</a> includes a bunch of examples that should be enough to get you started should you ever want to try using this namespace.</p>
<h2>Some other formats</h2>
<p>Before I start writing posts on threading for just every single syndication format, here is some info for two formats I have experimented with in <a href="https://tilde.town/~lucidiot/itsb/" target="_blank">ITSB</a>:</p>
<p><a href="https://jsonfeed.org/version/1.1" target="_blank">JSON Feed</a> does not have support for threading in its spec, but you could just make your own extension for that. It does not use JSON-LD either, which would have allowed for a similar extension system as XML; but after experiencing the complexity of JSON-LD first hand at my day job and facing the numerous interoperability issues that causes, I can definitely understand that they wouldn't want to.</p>
<p><a href="https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa768139(v=vs.85)" target="_blank">Channel Definition Format</a> allows for nested channels, so you could at least create a structured representation of a thread as a tree if you, the original author of the post, knew about all the replies. You cannot, however, specify that you are replying to something yourself. The format does support XML namespace extensions, so you could use <code>thr</code> or mod_annotation.</p>
]]></description>
</item>
<item>
<title>Exploring obsolete Japanese syndication formats</title>
<pubDate>Sat, 03 Apr 2021 16:24:10 +0200</pubDate>
<guid isPermaLink="false">japanese-formats</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">HINA</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">LIRS</category>
<description><![CDATA[
<p>I am always fascinated when I somehow manage to learn a bit about the early days of the Internet in South East Asia. At a time when Unicode barely even existed, when non-Latin alphabet support was just relying on a ton of hacks, a lot of interesting things happened.</p>
<p>I recently translated some Japanese specifications I found on the Wayback Machine for two obsolete syndication formats. I first had to determine which encoding the specifications were using, because Google Translate was really unhappy with that; I had to convert from Shift-JIS to UTF-16 then to UTF-8, and from EUC-JP to UTF-8. I am using Google Translate because I know absolutely nothing about Japanese; I just take the messy "English" translation and turn it into comprehensible English.</p>
<p>I first translated <a href="https://envs.net/~lucidiot/hina/" target="_blank">HINA</a>, a format that relies on RFC 822 message headers and was designed for Asahina-Antenna. It appears that in Japan, feed readers were called "antennas". This format is apparently still served by some websites according to a quick online search; I will look into that later, just as I will look into those antennas.</p>
<p>Today, I translated <a href="https://envs.net/~lucidiot/lirs/" target="_blank">LIRS</a>, a format that uses a gzipped simili-CSV to report the same thing.</p>
<p>These two formats do not have item descriptions or optional URLs; they are only meant to report changes on external content. They already take into account the notion of feed aggregation. HINA even has image-related data for photo galleries.</p>
<p>It is pretty hard to trace those formats, first because of the rather obvious language barrier I am facing, and second because the Wayback Machine did not always catch everything, so there are many dead links. Of course, everything is completely dead today. I am however going to keep looking into those formats, and they will soon be implemented in <a href="https://tilde.town/~lucidiot/itsb/" target="_blank">ITSB</a> just for the sake of keeping them alive.</p>
]]></description>
</item>
<item>
<title>XKCD</title>
<pubDate>Mon, 05 Jul 2021 14:44:35 +0200</pubDate>
<guid isPermaLink="false">xkcd</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.xkcd.com/rss.xml</link>
<description>
Quite the classic feed here, but the only criteria for me to feature a feed on here is that it exists, because I want to see both more feed producers and consumers. If you have no idea what XKCD is, well, you are probably missing out on a lot of developer jokes.
</description>
</item>
<item>
<title>coolguy.website</title>
<pubDate>Sun, 11 Jul 2021 15:04:28 +0200</pubDate>
<guid isPermaLink="false">coolguy</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://coolguy.website/rss/index.xml</link>
<description>A friend of a friend, with a nice-looking website. Their site has some random zines and articles on various topics. Not updated that often, but that's okay, that's a smol personal website and that's the kind of websites I want to see more often.</description>
</item>
<item>
<title>The Daily WTF</title>
<pubDate>Sun, 18 Jul 2021 05:46:44 +0200</pubDate>
<guid isPermaLink="false">thedailywtf</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://syndication.thedailywtf.com/TheDailyWtf</link>
<description>
While browsing the blog to learn a bit more and have something to say here, I found something that is worth posting there; its forum had a weird French translation, displaying "Il y a 3 ans later" (Three years ago later). Unfortunately, from past experience, I know they tend to filter submissions rather hard, so it did not make it to their articles.
</description>
</item>
<item>
<title>9 Eyes</title>
<pubDate>Mon, 26 Jul 2021 09:55:34 +0200</pubDate>
<guid isPermaLink="false">9eyes</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://9-eyes.com/rss</link>
<description>Unfortunately not as active as it used to be. This Tumblr blog shares strange, usually funny, pictures found in Google Street View.</description>
</item>
<item>
<title>Brainshit</title>
<pubDate>Sun, 01 Aug 2021 14:34:33 +0200</pubDate>
<guid isPermaLink="false">brainshit</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://brainshit.fr/rss</link>
<description>This is the RSS feed of my own French blog. I often post about various technical shenanginans that you won't see in my other sites, as well as other non-technical content that I don't put anywhere else either.</description>
</item>
<item>
<title>netscape_navigator</title>
<pubDate>Sun, 08 Aug 2021 16:22:34 +0200</pubDate>
<guid isPermaLink="false">netscape_navigator</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tilde.town/~netscape_navigator/rss/feed.rss</link>
<description>A good friend that I share a passion for the 16-bit Windows era with. This particular feed is a web version of their Secure Scuttlebutt logs, and although it has not been updated for a while, I still want to share it because I really dig the design of that website. The images use 216 colors, aka the netscape-compatible color palette, which inspired me to do the same for every image on all of my websites, because that color style is amazing.</description>
</item>
<item>
<title>n-gate</title>
<pubDate>Mon, 16 Aug 2021 19:21:01 +0200</pubDate>
<guid isPermaLink="false">n-gate</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://n-gate.com/index.rss</link>
<description>A blog that is now well-known for its "webshit weekly", which makes fun of the top posts on Hackernews and their comments. It includes whole article contents in the RSS items, so you can read that feed without ever leaving your feed reader.</description>
</item>
<item>
<title>#fridaypostcard</title>
<pubDate>Sun, 22 Aug 2021 18:45:50 +0200</pubDate>
<guid isPermaLink="false">fridaypostcard2</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tilde.town/~lucidiot/fridaypostcard.xml</link>
<description><![CDATA[
<p>A feed of my own creation which assembles the #fridaypostcards from tilde.town.</p>
<p><a href="http://tilde.town/~jumblesale/fp.html" target="_blank">Friday postcards</a> are a concept made by ~jumblesale on tilde.town in which you share a URL to an image along with "#fridaypostcard" (and optionally a comment) on IRC, and a bot picks it up and builds an HTML page every Friday.</p>
<p><a href="http://tilde.town/~jumblesale/fp/archive/">An archive</a> gets generated each week too, but there was no easy way to get postcards in my RSS reader and I had found multiple issues in the way URLs were handled, causing some Imgur URLs to not work among other things. I at first had copy-pasted the original script, but then rewrote it to handle those errors and get every single postcard ever made into one W3C-valid RSS feed.</p>
<p>You can browse the script that generates this feed <a href="https://tildegit.org/lucidiot/fprss/" target="_blank">on tildegit</a>.</p>
]]></description>
</item>
<item>
<title>Pedestrian Observations</title>
<pubDate>Wed, 15 Sep 2021 19:08:35 +0200</pubDate>
<guid isPermaLink="false">pedestrianobservations</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://pedestrianobservations.com/feed/</link>
<description>A public transit researcher that mostly talks about the many issues in public transit. The most common trend you will quickly notice if you start reading regularly is that every American transit planner is either an idiot or forced to make bad decisions by politicians or other idiots, that construction costs are insanely high, and that cars are going to keep their supremacy for a long while. This just reinforces the idea that I should stay in Eurasia and never ever try to go to North America.</description>
</item>
<item>
<title>netscape_navigator's news feed</title>
<pubDate>Mon, 20 Sep 2021 08:34:26 +0200</pubDate>
<guid isPermaLink="false">netscape_navigator_news</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://news.rickcarlino.com/rss.rss</link>
<description><![CDATA[
<p>I stopped reading technology news from aggregators like Hacker News or lobste.rs, due to their numerous issues as highlighted by n-gate, and I do not read from mainstream tech websites either because 99% of what they publish does not interest me. Additionally, most publications will just wake up my resent for modern technology since it ignores most of its own issues, so I keep my anger at bay by not reading anything.</p>
<p>A few months ago, ~netscape_navigator showed me his "recent reading" list, for which I requested an RSS feed. He uses it in <a href="https://rickcarlino.com/2017/developer-news-productivity-hack.html" target="_blank">an interesting process</a> to feed on the news while driving using text-to-speech, and just decided to publish his curated news feed. I now generally see this feed as my "wholesome news" feed, because most articles on there are about interesting scientific discoveries, hacking projects, tech history podcasts and articles, etc. There still are some bad news but they are much less related to current politics or other issues of the tech industry like e-waste, america-centrism or racism.</p>
<p>You could probably argue this is kind of a <a href="https://en.wiktionary.org/wiki/circle_jerk" target="_blank">circle jerk</a>, since I am only reading the news from my friends who are more likely to share the same opinions as me; but this feed does not really have that many news, and I am already well aware of the most important issues in tech since I will still see them being discussed on IRC, tilde.news, Misskey, or at the workplace. They are discussed enough for me to just not want them to pollute my RSS reader as well, a place where I can go with the expectation to either relax or learn things. Having this feed here helps me get more interesting articles from lesser-known English-speaking news websites that I simply never heard of in France, such as <em>Scientific American</em>, or discover new blogs.</p>
<p>You can also <a href="https://news.rickcarlino.com/">view the articles in a browser</a>, but why would you do that when you have an RSS reader?</p>
]]></description>
</item>
<item>
<title>500mile.email</title>
<pubDate>Mon, 27 Sep 2021 14:45:29 +0200</pubDate>
<guid isPermaLink="false">500mile.email</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://500mile.email/feed.xml</link>
<description><![CDATA[
<p>Have you heard about the <a href="http://web.mit.edu/jemorris/humor/500-miles" target="_blank">500-mile email</a> story? If not, do go read it, it is a classic for nerds. Someone made a website listing various other interesting troubleshooting stories like those, and there is an RSS feed!</p>
<p>Updates are pretty rare, but it still an interesting feed to have; on the rare occasion that a new article gets there, you know you're in for an great read.</p>
]]></description>
</item>
<item>
<title>Publications Office of the European Union</title>
<pubDate>Tue, 05 Oct 2021 09:02:47 +0200</pubDate>
<guid isPermaLink="false">op.europa.eu</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://op.europa.eu/</link>
<description><![CDATA[
<p>Did you know that the EU has a publications office, dedicated to all of the EU's legal texts, magazines, or other publications. They used to maintain a website called the EU Bookshop, which allows you to order their publications, some of them for free and with no shipping fees for addresses within the European Union. The site went through a redesign earlier this year, and while I have some complaints, it seems they upgraded their servers and I no longer can create HTTP 502 errors just by clicking a little too fast; and more importantly, you can have RSS feeds.</p>
<p>If you register for an account, you can save your searches and then either create email alerts about any new publication in the search results, or get an RSS feed of it. I use that to follow various terms like <em>bookmark</em>, <em>postcard</em>, <em>calendar</em> and <em>USB</em>: I know some people who collect bookmarks, the free postcards they make give me nice illustrations for my notebooks, the calendars usually are large A0 posters so I can fill my wall with them, and they used to offer three publications in the form of USB drives, so I stay on the lookout for that. I should probably also add <em>notebook</em> to the lot, because I have a drawer full of free notebooks. My very first Bullet Journal was started on one of those books.</p>
<p>The website is supposed to only allow you to order one free copy per email address (or per account if you registered, since you can also order without registering), and you will need to confirm your email address if you order as a guest. Since some mail providers like Gmail let you get away with putting dots or dashes in your address and will redirect to your actual email, you can actually get much more from a single address; I was using only the dots and counted in binary to get all the possible unique combinations of dots while ordering a hundred USB keys or nearly a hundred notebooks. I got them all, in a hundred separate envelopes. That was a lot of fun :D</p>
]]></description>
</item>
<item>
<title>m455's blog</title>
<pubDate>Thu, 14 Oct 2021 22:46:05 +0200</pubDate>
<guid isPermaLink="false">m455</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://m455.casa/feed.rss</link>
<description><![CDATA[
<p>Yet another of my friend's blogs. Can you feel that my presence in their social circle influences their decision to provide RSS or Atom feeds?</p>
<p>This good friend has built his own static site generator, and built a few more, and we sometimes joke that all that he does is build site generators instead of writing actual blog content. But his feed (and thus his blog) sometimes fill up with some interesting articles anyway. You can in particular get some great examples of well written documentation if you want some inspiration to make this often overlooked part of software development a little nicer in your own projects.</p>
]]></description>
</item>
<item>
<title>Escargot Today</title>
<pubDate>Tue, 19 Oct 2021 17:41:48 +0200</pubDate>
<guid isPermaLink="false">escargot-today</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.escargot.chat/news/rss/</link>
<description><![CDATA[
<p>Did you know that Windows Messenger, MSN Messenger, Windows Live Messenger, Messenger Plus! Live, Yahoo Messenger and Mercury Messenger all have not died at all, and that people loved them so much that there is now a Python FOSS server to replace Microsoft's and Yahoo's servers?</p>
<p><a href="https://escargot.chat" target="_blank">Escargot</a> is a project to revive all of those clients and extra tools, and bring them back into 2021. It is already currently possible to talk between MSN and Yahoo Messenger, and there are plans to maybe, in the long term, support Matrix, XMPP, IRC, or AIM (which already has a server from another project called NINA), to really bring together all of those messaging services.</p>
<p>As I have been occasionally using a Windows XP laptop as my daily driver for a few days each time, I have kept a MSN Messenger 7.5 instance running. Just one friend got in touch with me using it, but I just like to see it being online in my notification area anyway. I also have installed Mercury Messenger on my phone so I can really stay online on MSN all the damn time. If you want to reach me there, and somehow manage to get an Escargot account and a compatible client installed, you can find my Escargot ID on <a href="https://tilde.town/~lucidiot/contact.html" target="_blank">my contact page</a>.</p>
<p>I just discovered today that Escargot has an RSS feed for its recent news, Escargot Today. And it does not just include the last 5 or 10 posts like most blogs do, this feed just has every single news entry since 2017, which is neat. There are not that many updates since most of the project's true activity is on their GitLab repo, but if you plan on playing with this client, this feed will make sure you don't miss out on any breaking changes they might make. You can also access that page on newer versions of MSN since they changed the MSN Today URL to point at their site.</p>
]]></description>
</item>
<item>
<title>Subscribing with TinyTinyRSS in SeaMonkey</title>
<pubDate>Sat, 23 Oct 2021 01:52:34 +0200</pubDate>
<guid isPermaLink="false">seamonkey-tinytinyrss</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<description><![CDATA[
<p>Remeber my previous adventures with Pale Moon where I configured it to quickly subscribe to TinyTinyRSS? Well, ~m455 reminded me of the existence of SeaMonkey today. It has a mail client, newsgroups, feed subscriptions, IRC, and a HTML editor, and never dropped FTP support. You can also get Gopher support by installing <a href="https://addons.thunderbird.net/fr/seamonkey/addon/overbiteff/">OverbiteFF</a>; it says SeaMonkey 2.43 and later is not supported, but it worked just fine for me under SeaMonkey 2.49.5.</p>
<p>Back when I was using Pale Moon, I could not find out how to add a new option without removing the existing ones so I just overwrote Yahoo with TinyTinyRSS. But this time, I got it to work with an extra setting! Here is the configuration in <code>about:config</code> that I managed to use for SeaMonkey:</p>
<dl>
<dt>browser.contentHandlers.types.6.title</dt>
<dd><code>TinyTinyRSS</code></dd>
<dt>browser.contentHandlers.types.6.type</dt>
<dd><code>application/vnd.mozilla.maybe.feed</code></dd>
<dt>browser.contentHandlers.types.6.uri</dt>
<dd><code>https://rss.envs.net/public.php?op=subscribe&amp;feed_url=%s</code></dd>
</dl>
]]></description>
</item>
<item>
<title>Space Impact</title>
<pubDate>Sun, 31 Oct 2021 01:12:07 +0200</pubDate>
<guid isPermaLink="false">space-impact</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://blog.jatan.space/feed</link>
<description><![CDATA[
<p>Here is an RSS feed generated by Substack, a service that I have very regularly seen recently due to everyone using it to create paid newsletters. I absolutely despise e-mail newsletters, but they dealt with that problem by adding an RSS 2.0 feed for each newsletter at <code>/feed</code>. As Substack really scares me due to this e-mail part, I have never tried paying for one of those newsletters, so I do not know if that RSS feed would be available too for paid subscribers, maybe with a token. That would make it a very rare kind of paid RSS feeds, something which I know exists as I have seen it in a specification for the PlayStation Portable but that I have never seen in the wild before.</p>
<p>This particular feed is a free newsletter about space exploration from an Indian writer. He initially had two newsletters, <em>Space Impact</em> and <em>Moon Monday</em>, but they got merged into one. I initially discovered this blog through <em>Moon Monday</em>, a weekly report of everything that is happening related to our exploration of the Moon. The goal of this weekly report is to show that exploring the Moon is still on the table and that we still have a lot to learn about it. Things happen quickly enough that posting once a week is indeed necessary.</p>
<p>The reporting is generally pretty comprehensive, despite a noticeable bias against <abbr title="Indian Space Research Organization">ISRO</abbr>; the author regularly criticizes his own country's space program as it is often opaque or makes bad decisions. I would like to see more of this critical thinking applied to all the other reported events (which are usually only shown as facts, without much commentary), as there are a lot of issues with Artemis, the American lunar base program, and with <abbr title="International Lunar Research Station">ILRS</abbr>, the Russian and Chinese project.</p>
<p>NASA going fully commercial on the base, all the way to calling for proposals on spacesuits, vehicles that transport astronauts between their training building to the launch pad, rovers, communication satellites, etc., and potentially allowing companies to mine the Moon, means NASA is bringing capitalism to space along with all its issues. Roscosmos' space budget is being slashed by Putin, because they did not achieve their set objectives in time—obviously, less budget will mean they can do more next year. And China's space program had a lot of issues, since rocket parts sometimes fall onto inhabitants (a huge no for absolutely everyone else), and most of what we know about the program comes from leaks.</p>
<p>But I would never have learned about all of these issues without having this blog as a starting point, teaching me about the current state of the space industry and scientific community, which have been completely transformed in the last few years. So if you are interested in learning more about space and what we're planning about it, I cannot recommend it enough.</p>
]]></description>
</item>
<item>
<title>rachelbythebay</title>
<pubDate>Tue, 09 Nov 2021 23:31:00 +0100</pubDate>
<guid isPermaLink="false">rachelbythebay</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://rachelbythebay.com/w/atom.xml</link>
<description><![CDATA[
Some interesting tales from a sysadmin, mostly of incidents in production and their mismanagement. It is an interesting read for me sometimes since I do not have any experience in larger companies. The mismanagement part really makes me realize how lucky I am to not have said experience.
]]></description>
</item>
<item>
<title>WIN98SE</title>
<pubDate>Thu, 25 Nov 2021 09:09:53 +0100</pubDate>
<guid isPermaLink="false">win98se</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://win98se.com/rss</link>
<description><![CDATA[
<p>If you look for "aesthetic" pictures on Tumblr, and you filter out all the stuff with a synthwave pink and blue palette or the photoshopped stuff, you'll probably find a lot of Windows 9x screenshots. I found this aptly named blog, full of screenshots, and it's a pretty nice source of inspiration for when I want to do things on my Windows 98 SE virtual machine.</p>
<p>With those screenshots, I had found some software a few months ago called <a href="https://www.kurtz-fernhout.com/PlantStudio/" target="_blank">PlantStudio</a> and it is impressive. There are some screenshots I haven't really exploited yet, mostly of Japanese software. I really am fond of exploring the Japanese web, be it through some of their attempts at creating internet standards like HINA or through the software they created.</p>
<p>Speaking of, It makes me a little sad that Japanese websites are slowly switching to the more "modern" designs we see now, like flat design, and are not keeping the condensed, efficient looks they had before. I used to browse Pixiv regularly, and while its new design is a bit more useful to English speakers, I had gotten used to knowing from memory what each link was in Japanese in the old design and the new one made me lose a ton of features. I wish we could just all go back in time and destroy JavaScript to prevent all of this.</p>
]]></description>
</item>
<item>
<title>It's Pro Toad and Superb Owl</title>
<pubDate>Sun, 05 Dec 2021 21:20:40 +0100</pubDate>
<guid isPermaLink="false">protoad</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://git.tilde.town/dozens/protoadandsuperbowl/raw/branch/master/feed.xml</link>
<description><![CDATA[
<p>A plaintext webcomic made by a friend of mine who coined the term <em>Rsszard of Syndication</em> to describe me and seems me as a <a href="http://tilde.town/~dozens/feeds/feeds.png" target="_blank">monster feeding on feeds</a>. Many comics are inspired by conversations we have on IRC, so they share the same kind of weird humor.</p>
<p>The feed is currently broken due to improper XML quoting, and the repo is being moved from another Gitea instance that has had serious technical issues for a while, so it is a bit messy. I opened <a href="https://tildegit.org/dozens/protoad/issues/1" target="_blank">an issue</a> to get it resolved.</p>
]]></description>
</item>
<item>
<title>365 RFCs</title>
<pubDate>Mon, 13 Dec 2021 15:58:10 +0100</pubDate>
<guid isPermaLink="false">365rfcs</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://write.as/365-rfcs/feed/</link>
<description><![CDATA[
This is a very interesting blog that ran in 2019 with one post a day. Each post studied one <abbr title="Request for Comments">RFC</abbr> at once, starting from the very first one, and its author went as far as visiting the <a href="https://www.computerhistory.org/">Computer History Museum</a> to get access to the original RFCs as they were before they got poorly transcribed into their current online forms, as they included handwritten diagrams. That blog is now dead, but if you want to learn about the history of the Internet, this is a very good resource. This taught me among other things that Telnet is older than the Internet itself.
]]></description>
</item>
<item>
<title>computers are bad</title>
<pubDate>Sun, 19 Dec 2021 19:48:30 +0100</pubDate>
<guid isPermaLink="false">computer.rip</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://computer.rip/rss.xml</link>
<description><![CDATA[
<p>You know you just can't go wrong with a name like that.</p>
<p>This feed is from a newsletter than also offers an RSS feed and fax delivery. Its author mostly focuses on the history of technology on various subjects, and has taught me as many things as the previously mentioned <a href="https://write.as/365-rfcs/" target="_blank">365 RFCs</a> project.</p>
]]></description>
</item>
<item>
<title>One year of feeds</title>
<pubDate>Tue, 28 Dec 2021 08:38:56 +0100</pubDate>
<guid isPermaLink="false">oneyear</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<description><![CDATA[
<p>I was preparing to post yet another feed I subscribe to on this feed, then I realized that I've been at it for a while and checked the date of the very first post of this feed. It turns out RSRSSS has had its first anniversary two weeks ago, on December 15<sup>th</sup>!</p>
<p>I wasn't really expecting to be able to keep up posting some things to this feed for a whole year, especially considering that I have multiple other websites to take care of and that this year has been hectic.</p>
<p>I still have a pretty long list of things I would like to post about, more interesting posts that just throwing a feed around at random. Let's admit it, when I post a feed, it's just to keep posting regularly when I just don't have the time.</p>
<p>I have been posting about some of my programming projects over on <a href="https://brainshit.fr" target="_blank">my French blog</a>, and I have been thinking about posts on RSRSSS or on feeds in general later this year. This might give me some fuel to post more on this meta-feed. For now though, I'm posting about parsing geospatial data, and I'll follow that with a dozen articles on some reverse engineering I've been doing. There are so many posts I want to write everywhere and I have so little time and energy…</p>
<p>I have no idea who is even reading this feed since I don't have any stats and I don't want any, but if you've been reading this for the whole year, well thank you very much. Let's hope RSRSSS stays up for another year!</p>
]]></description>
</item>
<item>
<title>Feedplz</title>
<pubDate>Sun, 02 Jan 2022 04:45:57 +0100</pubDate>
<guid isPermaLink="false">feedplz</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tool</category>
<link>https://feedplz.codl.fr/</link>
<description><![CDATA[
<p>For the first time in this feed, here's a feed generator!</p>
<p>There are many tools to generate RSS feeds from HTML pages, and some of them might just be point and click and they might work for pages that are relatively simple. Some work by looking for semantic HTML tags like <code>&lt;article&gt;</code>, or some require you to write some CSS or XPath selectors or just do some code. But my favorite kind of tool is some program or website that is dedicated to serving RSS feeds for some particular websites, for which feeds are regularly asked for but the devs are refusing to. I guess this somehow falls under the category of <a href="https://www.eff.org/deeplinks/2019/10/adversarial-interoperability" target="_blank">adversarial interoperability</a>. Providing an RSS feed for a website against its publisher's will is one of many ways to prevent it from being a completely closed environment, and force it to fit the philosophy of the web, which is to <em>share</em>.</p>
<p>I have done a few of those feed generators over time, and I even published one of its feeds on here. But I had yet to see someone in my Internet circle do something similar. <a href="https://chitter.xyz/users/codl" target="_blank">@codl</a>, a cool friend, made <a href="https://feedplz.codl.fr/" target="_blank">Feedplz</a>, a service that provides RSS and Atom feeds for <a href="https://www.furaffinity.net/" target="_blank">FurAffinity</a> and <a href="https://ssp-comics.com/" target="_blank">SSP-Comics</a>. If you are interested in those websites, definitely check this service out and give codl some love.</p>
<p>It's always great to see someone other than me show some interest in feeds, especially to the point of creating new feeds. This service might not have the most well written Python code, or might break easily should any of those websites choose to change something, but it has the merit of existing and of being a reminder that feeds do exist and that some people want them. Just that alone gives me warm fuzzies.</p>
]]></description>
</item>
<item>
<title>sfeed</title>
<pubDate>Sun, 09 Jan 2022 22:31:53 +0100</pubDate>
<guid isPermaLink="false">sfeed-parser</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tool</category>
<link>https://codemadness.org/sfeed-simple-feed-parser.html</link>
<description><![CDATA[
<p>~elioat made me discover <a href="https://codemadness.org/sfeed-simple-feed-parser.html" target="_blank">sfeed</a>, a tool that parses RSS and Atom feeds and can generate a list of items in multiple formats, including a static HTML page, a <a href="https://twtxt.readthedocs.org/en/stable/" target="_blank">twtxt</a> feed, or an Atom feed. This is what it looks like on Eli's own setup:</p>
<ul>
<li><a href="https://txt.eli.li/pb/rss/feeds.html" target="_blank">HTML view</a></li>
<li><a href="https://txt.eli.li/pb/rss/exported-feeds.opml" target="_blank">An OPML export of all the subscriptions</a></li>
<li><a href="https://txt.eli.li/pb/rss/feeds.atom" target="_blank">An Atom feed combining every subscription</a></li>
<li><a href="http://txt.eli.li/pb/rss/feeds.txt" target="_blank">A twtxt feed combining every subscription</a></li>
</ul>
<p>While the Atom feed feels a little crude to me, a constant abuser of XML namespaces inside of feeds, I like the idea of what is basically a static site generator whose content comes from feeds. Static sites always feel much more manageable to me, be it as a developer, as a server administrator, or as an archivist. I do have an archivist side, with how much I've been using the Internet Archive in all my projects.</p>
]]></description>
</item>
<item>
<title>DeviantArt feeds</title>
<pubDate>Wed, 19 Jan 2022 21:40:42 +0100</pubDate>
<guid isPermaLink="false">deviantart</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://www.deviantart.com/developers/rss</link>
<description><![CDATA[
<p>Some websites like YouTube or Tumblr still provide syndication feeds, but rarely advertise them. They would rather see its use die down until they can safely just remove it, because managing a single page that generates a bunch of XML is way too much to ask for in a world full of JavaScript, JSON and social media. Websites whose audience are usually developers like GitHub or GitLab generally do the opposite and serve more feeds because the devs want them. It is quite unfortunate that syndication feeds are now mostly restricted to technical people, and I'm pretty sure Google Reader's death is partly to blame.</p>
<p>DeviantArt is not aimed at developers but deviants (I guess they're both <em>devs</em>?) but still provides some RSS feeds. With their recent redesign, they have been doing away with most of their comfy and featureful interface to replace it with some laggy experience that's inconsistent with its own mobile apps. Every switch back to a page that still uses the old UI is a breath of fresh air.</p>
<p>One of those pages is the <a href="https://www.deviantart.com/developers/rss">RSS feeds documentation</a>, which also makes me a little worried that they might do away with RSS feeds at some point. They still do serve RSS feeds anyway, allowing you to search for deviations or journal entries. The feeds use Media RSS, which could make them usable on a Playstation Portable if you know how to work around the SSL issues. There is one base URL for all of the feeds:</p>
<p><a href="https://backend.deviantart.com/rss.xml" target="_blank"><code>https://backend.deviantart.com/rss.xml</code></a></p>
<p>The query parameters for the feeds are pretty poorly documented, so here is my attempt at it:</p>
<dl>
<dt>limit</dt>
<dd>How many items to return at once. Defaults to and cannot exceed 60.</dd>
<dt>q</dt>
<dd>
Search query. When omitted, the feed will return the most popular results. The search syntax is <a href="https://www.deviantartsupport.com/en/article/are-there-any-tricks-to-narrowing-down-a-search-on-deviantart" target="_blank">partially documented on the official help center</a>. Additional operators that are not documented on this page include:
<dl>
<dt>boost:</dt>
<dd>The only known value is <code>popular</code>, to sort by most popular.</dd>
<dt>by:</dt>
<dd>Synonym for the officially documented <code>username:</code>. Filters by the name of the submitter.</dd>
<dt>gallery:</dt>
<dd>Synonym for the officially documented <code>username:</code>. Filters by the name of the submitter.</dd>
<dt>location_tag:</dt>
<dd>Filter by a location tag.</dd>
<dt>in:</dt>
<dd>Filters by a category. Category names here are pretty poorly documented, especially since DeviantArt is doing away with categories, but they seem to all have a name only in lowercase and with no spaces. For subcategories, use a slash as a path separator: <code>digitalart/drawings</code>.</dd>
<dt>sort:</dt>
<dd>
Change the sorting mode. Values are that are known to work include:
<dl>
<dt>popular</dt>
<dd>Sort by most popular first.</dd>
<dt>time</dt>
<dd>Sort by most recent first.</dd>
</dl>
This filter overrides both <code>boost:</code> and <code>special:</code>.
</dd>
<dt>special:</dt>
<dd>
Special filter? I don't know, it's pretty redundant. Known values include:
<dl>
<dt>popular</dt>
<dd>Sort by most popular first.</dd>
<dt>newest</dt>
<dd>Sort by most recent first.</dd>
<dt>critiquable</dt>
<dd>Only include deviations that accept critiques. Now causes an HTTP 500 error.</dd>
</dl>
Any other value seems to cause an HTTP 500 error.
</dd>
<dt>subject_tag:</dt>
<dd>Filter by a subject tag.</dd>
<dt>tag:</dt>
<dd>Filter by a tag.</dd>
</dl>
</dd>
<dt>offset</dt>
<dd>Offset to start at, for pagination. Defaults to zero. You can also use the <code>&lt;atom link rel="next" /&gt;</code> tags to get pre-made URLs for the next page.</dd>
<dt>order</dt>
<dd>
An integer controlling the sorting. This is overriden by any sorting options specified in <code>q</code>.<br />
It seems that the only two valid values are <code>9</code> for most popular, and any other integer for newest.
</dd>
<dt>type</dt>
<dd>
Type of items to retrieve. Values that are known to work include:
<ul>
<li>deviation (default)</li>
<li>journal</li>
</ul>
</dd>
</dl>
<p>Some of those query parameters were found by digging through a million URLs archived by the Wayback Machine using <a href="https://github.com/internetarchive/wayback/tree/master/wayback-cdx-server" target="_blank">their CDX server</a>.</p>
<p>If you have any further knowledge that should be added here, feel free to <a href="https://tilde.town/~lucidiot/contact.html" target="_blank">contact me</a>.</p>
]]></description>
</item>
<item>
<title>Kerbal Space Agency</title>
<pubDate>Wed, 26 Jan 2022 20:10:02 +0100</pubDate>
<guid isPermaLink="false">ksa</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://www.kerbalspace.agency/ksa/?feed=rss2&amp;launch=false&amp;maneuver=false</link>
<description><![CDATA[
<p>This feed shows you what happens when a Kerbal Space Program player wants to play <em>realistically</em>. The Kerbal Space Agency is a fictional space agency that tries to play in real Earth time and starts from the very beginning with weather balloons or sounding rockets. The project has been going on for a few years and is mostly active <a href="https://twitter.com/KSA_MissionCtrl" target="_blank">on Twitter</a>, with the website providing summaries, off-character commentary, and a <a href="http://www.kerbalspace.agency/Tracker/tracker.asp" target="_blank">mission tracker</a> that fetches data straight from the save file.</p>
<p>The project has been much more silent since the pandemic, and there have been no news at all on whether or not it will be coming back, so for now this feed is quite inactive. However, the history there is pretty interesting to read still.</p>
<p>Since this is a WordPress blog, you can also get the <a href="http://www.kerbalspace.agency/ksa/?feed=atom&amp;launch=false&amp;maneuver=false" target="_blank">Atom feed</a> or the <a href="http://www.kerbalspace.agency/ksa/?feed=rdf&amp;launch=false&amp;maneuver=false">RDF Site Summary feed</a>.</p>
]]></description>
</item>
<item>
<title>The USA's definition of an RSS feed</title>
<pubDate>Mon, 31 Jan 2022 23:16:35 +0100</pubDate>
<guid isPermaLink="false">govinfo-fail</guid>
<link>https://www.govinfo.gov/feeds</link>
<description><![CDATA[
<p>The <a href="https://www.govinfo.gov/feeds" target="_blank">RSS feeds page</a> of the <em>govinfo</em> service of the United States Government Publishing Office has an interesting definition of an RSS feed:</p>
<figure>
<blockquote cite="https://www.govinfo.gov/feeds">
<p>RSS feeds, (which have the extension ".xml", ".rss", ".sfm", ".cfm", ".rdf", ".aspx", or ".php"), …</p>
</blockquote>
<figcaption>—United States Government Publishing Office, <cite><a href="https://www.govinfo.gov/feeds" target="_blank">govinfo RSS feeds</a></cite></figcaption>
</figure>
<p>So if you have been coding in PHP, ASP.NET, or ColdFusion, you will now know that you have been writing nothing but RSS feeds the whole time!</p>
<p>I couldn't find out what truly is the <code>.sfm</code> file extension, so if you know about it, please <a href="https://tilde.town/~lucidiot/contact.html" target="_blank">let me know</a>.</p>
]]></description>
</item>
<item>
<title>Requests for Comments</title>
<pubDate>Wed, 09 Feb 2022 11:40:18 +0100</pubDate>
<guid isPermaLink="false">rfc-feeds</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.rfc-editor.org/rfcrss.xml</link>
<description><![CDATA[
<p>The <a href="https://www.rfc-editor.org/" target="_blank">RFC Editor</a>, where the <abbr title="Requests for Comments">RFCs</abbr> that define Internet protocols are published, provides many ways to retrieve the <a href="https://www.youtube.com/watch?v=SiMHTK15Pik" target="_blank">over nine thousand</a> documents. Among them are <a href="https://www.rfc-editor.org/retrieve/rsync" target="_blank">rsync modules</a>, which I had never heard of before. But most importantly, there is an <a href="https://www.rfc-editor.org/rfcrss.xml" target="_blank">RSS feed</a> and an <a href="https://www.rfc-editor.org/rfcatom.xml" target="_blank">Atom feed</a>!</p>
<p>I guess having that Atom feed was quite predictable, considering that Atom has been standardized in <a href="https://datatracker.ietf.org/doc/html/rfc4287" target="_blank">RFC 4287</a>. Also note that RFCs should now be written using a specific XML format, also defined in another RFC; <a href="https://datatracker.ietf.org/doc/html/rfc7991">RFC 7991</a> being the current version. It feels quite strange to me to see such "high-level" formats in an RFC; I am more used to seeing RFCs about lower-level protocols like <abbr title="Transmission Control Protocol">TCP</abbr>/<abbr title="Internet Protocol">IP</abbr> or <abbr title="Border Gateway Protocol">BGP</abbr>.</p>
]]></description>
</item>
<item>
<title>Emojipedia Blog</title>
<pubDate>Tue, 15 Feb 2022 01:34:54 +0100</pubDate>
<guid isPermaLink="false">emojipedia</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://blog.emojipedia.org/rss/</link>
<description><![CDATA[
Another proof that Unicode probably goes too far: there is enough to say about emojis that an entire blog is dedicated to them. This is an RSS feed that has been sent to me by a friend, and this feed will definitely not make it into my RSS reader. I am posting this from a PuTTY session on a Windows XP laptop; I can't see any emojis there, so it is completely irrelevant.
]]></description>
</item>
<item>
<title>linkbudz</title>
<pubDate>Sun, 27 Feb 2022 21:21:45 +0100</pubDate>
<guid isPermaLink="false">linkbudz</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://linkbudz.m455.casa/feed.rss</link>
<description><![CDATA[
<p>A new project of <a href="https://m455.casa" target="_blank">~m455</a> involves an IRC bot that listens to the <code>!post</code> command on his private IRC server to let a user post a link with some title to <a href="https://linkbudz.m455.casa" target="_blank">a webpage</a>. The project kicked off nicely by not having any HTML sanitization, so the trolls (and QA engineers I guess) that we are on this IRC server sent tons of JavaScript, CSS overrides, iframes, background music, etc. That broke the RSS feed, but the sanitization is now properly in place and the feed is usable. If you are curious to see what our little corner of the internet finds on other corners of the internet, feel free to look around and subscribe to the feed.</p>
]]></description>
</item>
<item>
<title>Gitea's first feeds</title>
<pubDate>Sun, 06 Mar 2022 21:58:39 +0100</pubDate>
<guid isPermaLink="false">gitea-user-feed</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<description><![CDATA[
<p>Gitea 1.16.0 <a href="https://github.com/go-gitea/gitea/pull/16002" target="_blank">adds support</a> for user feeds. Those feeds include the things you see on a user's recent activity page. They are accessible either by setting the <code>Accept</code> header to <code>application/rss+xml</code> or <code>application/atom+xml</code>, or by appending <code>.rss</code> or <code>.atom</code> to a username.</p>
<p>For example, you can check out the <a href="https://tildegit.org/lucidiot.rss" target="_blank">RSS feed</a> and the <a href="https://tildegit.org/lucidiot.atom" target="_blank">Atom feed</a> for my profile on <a href="https://tildegit.org" target="_blank">tildegit.org</a>, the Gitea instance hosted by and for <a href="https://tildeverse.org" target="_blank">the tildeverse</a>.</p>
<p>This is a nice first step, though I feel that user feeds are among the least useful of all the feeds that most common Git platforms provide. As I also maintain Alpine Linux packages, help manage <a href="https://breadpunk.club" target="_blank">breadpunk.club</a> and manage my own server at home, the feeds that would matter the most to me are the tags or release notes feeds. Those feeds are the most efficient way to be notified of any new releases on most software, and I have opened <a href="https://github.com/wustho/epy/issues/47" target="_blank">some</a> <a href="https://github.com/iscc/mobi/issues/8" target="_blank">issues</a> in the past to ask some maintainers to use Git tags just so I can use the feed.</p>
<p>There is <a href="https://github.com/go-gitea/gitea/issues/569" target="_blank">an issue for global feed support</a>, and it is on the 1.17.0 roadmap. I subscribed to it, using the unfortunately email-based GitHub notification system, and will definitely follow it closely.</p>
]]></description>
</item>
<item>
<title>Free Steam games</title>
<pubDate>Sun, 13 Mar 2022 16:57:24 +0100</pubDate>
<guid isPermaLink="false">grabfreegames</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://grabfreegames.com/rss</link>
<description><![CDATA[
<p>I have an account on a Misskey instance. Misskey is some japanese fediverse software with what is probably the heaviest JavaScript frontend of them all and it is full of interesting features. The one feature relevant to this post is called <em>antennas</em>: you can create timelines that will look for any post known to this server that matches a list of words or regular expressions. I used that to look for anything that mentions RSS, to potentially catch some interesting conversations or be able to give some answers to people's questions without having to scroll through every post on the fediverse for hours.</p>
<p>Most posts are just random automated posts made by bots that were created to convert RSS feeds to ActivityPub, but sometimes I can find some nice things. I got the opportunity to mention <a href="https://envs.net/~lucidiot/hina/" target="_blank">HINA</a> at some point, and this week I found a new feed to add to my reader, <a href="https://grabfreegames.com">Grab Free Games</a>. The website's goal is pretty simple: tell you about any Steam games that are temporarily available for free, so that you can add them immediately to your Steam library and them prompty forget about them and never play them. Truly an amazing tool!</p>
]]></description>
</item>
<item>
<title>cosmic.voyage</title>
<pubDate>Mon, 21 Mar 2022 07:40:08 +0100</pubDate>
<guid isPermaLink="false">cosmic.voyage</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://cosmic.voyage/rss.xml</link>
<description><![CDATA[
<p>A whole tilde has its own global RSS feed! cosmic.voyage is a tilde whose members publish logs from spaceships, outposts, etc. in a sci-fi universe; a large writing project, similarly to <a href="https://scp-wiki.wikidot.com/" target="_blank">the SCP foundation</a>. I keep on telling myself I'll have to read some of it someday, but it just gets added to my long pile of things to read—books, blog posts, magazines, random web pages, etc.</p>
<p>If you are more of an <abbr title="Internet Engineering Task Force">IETF</abbr> fan, you can also get an <a href="https://cosmic.voyage/atom.xml" target="_blank">Atom feed</a>.</p>
]]></description>
</item>
<item>
<title>More explicit feed error reporting with mod_admin</title>
<pubDate>Mon, 30 May 2022 17:39:56 +0200</pubDate>
<guid isPermaLink="false">mod_admin</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://web.resource.org/rss/1.0/modules/admin/</link>
<description><![CDATA[
<p>While the <a href="https://www.rssboard.org/rss-specification#optionalChannelElements" target="_blank">RSS specification</a> and <a href="https://www.rssboard.org/rss-profile" target="_blank">RSS profile</a> both specify that the <a href="https://www.rssboard.org/rss-profile#element-channel-managingeditor" target="_blank"><code>&lt;managingEditor&gt;</code></a> and <a href="https://www.rssboard.org/rss-profile#element-channel-webmaster" target="_blank"><code>&lt;webMaster&gt;</code></a> must use e-mail addresses, and both also explicitly state that the <code>webMaster</code> is the e-mail address to contact for technical issues regarding the feed, most developers and users of RSS feeds and feed readers do not seem to have that in mind. Most feeds do not use those tags or might not even use valid e-mail addresses. Since most feed readers are focused on just getting the user to read some articles, and spit out some incomprehensible error or fail silently when something is wrong in a feed, they do not use those tags even when they are correctly specified to let the user ask for help.</p>
<p>I could go and ask for some enhancements to error reporting on all feed readers, but that would be extremely exhausting, as most work in open-source projects feels to me&mdash;I definitely am not great at communication. Instead, here is a small initiative that RSS feed developers can make to make the internals of their RSS feed generation system more visible and, for a user that is curious enough to be reading the feed's source, point directly to where they can complain at.</p>
<p>One of the approved <abbr title="RDF Site Summary">RSS</abbr> 1.0 modules, <a href="https://web.resource.org/rss/1.0/modules/admin/" target="_blank"><code>mod_admin</code></a>, also called the Administrative Module, defines an XML namespace, <code>xmlns:admin="http://webns.net/mvcb/"</code>, and two extra tags you can use:</p>
<dl>
<dt><code>&lt;<dfn>admin:generatorAgent</dfn>&gt;</code></dt>
<dd>Should use an URI in a <code>rdf:resource</code> attribute to point to the feed generator. This is redundant with the <abbr title="Really Simple Syndication">RSS</abbr> 2.0 <a href="https://www.rssboard.org/rss-profile#element-channel-generator" target="_blank"><code>&lt;generator&gt;</code></a> tag, and the <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a> will complain if you use both tags at once, but with this new tag, you can specify a URI instead of some arbitrary string, which could let a feed reader make a link available more easily.</dd>
<dt><code>&lt;<dfn>admin:errorReportsTo</dfn>&gt;</code></dt>
<dd>As above, the <code>rdf:resource</code> attribute should point to somewhere to report issues with this feed. This is usually a <code>mailto:</code> URI, but you could also point it to a contact form over HTTP. This is similar to the <a href="https://www.rssboard.org/rss-profile#element-channel-webmaster" target="_blank"><code>&lt;webMaster&gt;</code></a> tag, but the W3C validator does not complain about a redundancy here, so you can safely use both.</dd>
</dl>
<p>By adding <code>&lt;admin:generatorAgent&gt;</code> to your feed, you could let some random developer, let's say, <em>me</em>, look at your RSS feed generation code, and maybe find the bug for you. By adding <code>&lt;admin:errorReportsTo&gt;</code>, a tag name that is more explicit than <code>webMaster</code>, with a clickable <code>mailto:</code> link or a link to a contact form, you can make it easier for curious users and random developers to tell you that something is wrong.</p>
<p>It is obviously not that likely that some random user is going to look at the source of the feed when something is wrong, but considering that content syndication over feeds is dying and that most of its remaining users are the tech-savvy ones, it is not impossible.</p>
<p>And if, like me, you are using an <abbr title="eXtensible Stylesheet Language Transformation">XSLT</abbr> as your <a href="https://www.w3.org/TR/xml-stylesheet/" target="_blank"><code>&lt;?xml-stylesheet?&gt;</code></a>, you could add a link to report errors with your feed if someone is displaying it in a browser. If you open RSRSSS in your web browser and your browser does not have native support for RSS feeds, then you can find this link at the very bottom of the page.</p>
]]></description>
</item>
<item>
<title>Gitea has most feeds, except the most important one</title>
<pubDate>Mon, 08 Aug 2022 01:28:03 +0200</pubDate>
<guid isPermaLink="false">gitea-most-feeds</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<description><![CDATA[
<p>While Gitea's 1.16.0 release <a href="https://github.com/go-gitea/gitea/pull/16002" target="_blank">added support for user feeds</a>, it was laching the feeds for repositories, organizations, releases and commits. The 1.17.0 release <a href="https://github.com/go-gitea/gitea/pull/19055" target="_blank">adds support for feeds on repositories</a> and <a href="https://github.com/go-gitea/gitea/pull/17714" target="_blank">adds support for feeds on organizations</a>, but the feed for releases, the most well-known and most commonly used feed on GitHub, is still missing.</p>
<p>As mentioned earlier when I talked about the 1.16.0 release, the feeds are accessible either by setting the <code>Accept</code> header to <code>application/rss+xml</code> or <code>application/atom+xml</code> when requesting a user, an organization or a repository's URL, or by appending .rss or .atom to the username, repository name or organization name. Some examples:</p>
<ul>
<li>The <a href="https://tildegit.org/lucidiot.rss" target="_blank">RSS feed</a> and the <a href="https://tildegit.org/lucidiot.atom" target="_blank">Atom feed</a> for my account on <a href="https://tildegit.org" target="_blank">Tildegit</a>, the Gitea instance of the <a href="https://tildeverse.org" target="_blank">Tildeverse</a>;</li>
<li>The <a href="https://tildegit.org/lucidiot/rsrsss.rss" target="_blank">RSS feed</a> and the <a href="https://tildegit.org/lucidiot/rsrsss.atom" target="_blank">Atom feed</a> for the repository hosting RSRSSS;</li>
<li>The <a href="https://tildegit.org/casa.rss" target="_blank">RSS feed</a> and the <a href="https://tildegit.org/casa.atom" target="_blank">Atom feed</a> for the <a href="https://casa.tildepages.org" target="_blank">Commonhealth of Casakhstan</a>'s Gitea organization on Tildegit.</li>
</ul>
<p>I hope that we will see <a href="https://github.com/go-gitea/gitea/issues/19091" target="_blank">the feeds for releases</a> in the next release, so that Gitea adds the one missing feature to make package maintainers happy.</p>
<p>By the way, <a href="https://tildegit.org/lucidiot/rsrsss.rss" target="_blank">the RSS feed for the RSRSSS repo</a> could be called the Really Simple RSRSSS Repository Syndication feed, or <abbr title="Really Simple Really Simple Really Simple Syndication Syndication Repository Syndication">RSRSRSSSRS</abbr>.</p>
]]></description>
</item>
<item>
<title>tilde whirl</title>
<pubDate>Mon, 15 Aug 2022 13:52:03 +0200</pubDate>
<guid isPermaLink="false">tilde-whirl</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Podcast</category>
<link>http://tilde.town/~dozens/podcast/rss.xml</link>
<description><![CDATA[
<p>~dozens has started a podcast with tildeverse citizens as its guests. Since podcasts are fully backed by RSS, well there is an RSS feed available. I helped him iron out some details on the feed, since I had never toyed with RSS feeds for podcasts before and wanted to look at them a bit more in-depth. Maybe if I get enough experience helping <a href="https://casa.tildepages.org/" target="_blank">casakhstan</a> people set up their podcast feeds, I will write about it here…</p>
]]></description>
</item>
<item>
<title>The Plain Text Project</title>
<pubDate>Sun, 21 Aug 2022 09:16:00 +0200</pubDate>
<guid isPermaLink="false">plain-text-project</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://plaintextproject.online/feed.xml</link>
<description><![CDATA[
<p>The Plain Text Project is a blog initiated by Scott Nesbitt, a writer that has been Linux full-time for a while while not considering himself a <em>techie</em>, as in a power user. He shows various ways text files can be used, and includes tutorials on using tools such as <code>pandoc</code>. While the regular touting of Markdown as if it was the most perfect markup ever in most of the links shared on this blog annoys me, the suggestions can be inspiring to build your own plain text systems, and the author encourages using RSS feeds. You can get featured in it as well, by getting a quick interview over email on how you use plaintext.</p>
]]></description>
</item>
<item>
<title>tinyapps.org</title>
<pubDate>Tue, 30 Aug 2022 06:59:11 +0200</pubDate>
<guid isPermaLink="false">tinyapps</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tinyapps.org/blog/index.rss</link>
<description><![CDATA[
<p>tinyapps.org is a website I found through my binging of every single article of the previously featured <em>Plain Text Project</em>. It features an interesting selection of old and very small Windows and Mac software that perform tasks that could seem to be impossible in such a small size, such as a mail client or a web browser. I might have a deeper look through the selection and use some of the tools in my Windows XP setup…</p>
]]></description>
</item>
<item>
<title>Feedchievement get!</title>
<pubDate>Wed, 31 Aug 2022 17:30:53 +0200</pubDate>
<guid isPermaLink="false">200feeds-badge</guid>
<description><![CDATA[
<p>TinyTinyRSS currently shows that I have 202 feeds. Two of those feeds are currently down, and probably permanently, so I can say I just have 200 feeds.</p>
<p>I mentioned reaching 200 feeds on IRC, and ~dozens awarded me a badge for my <em>outstanding feedchievement</em>!</p>
<figure>
<img src="https://envs.net/~lucidiot/rsrsss/img/200feeds-badge.png" alt="drawing of a coat of arms with 200 written on it, surrounded by the words 'outstanding feedchievement', with a scroll in the background." loading="lazy" />
</figure>
<p>I have quite the backlog of feeds to share on here. Feel free to harass me if I don't post one each week, because I have no excuse.</p>
]]></description>
</item>
<item>
<title>Hide your feed from search engines with Feed Access Control</title>
<pubDate>Sun, 04 Sep 2022 19:18:30 +0200</pubDate>
<guid isPermaLink="false">fac-1.0</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://web.archive.org/web/20080101062756/http://www.bloglines.com/about/specs/fac-1.0</link>
<description><![CDATA[
<p><a href="https://web.archive.org/web/20080101062756/http://www.bloglines.com/about/specs/fac-1.0" target="_blank">Feed Access Control 1.0</a> was an extension to both RSS and Atom feeds proposed by <a href="https://en.wikipedia.org/wiki/Bloglines" target="_blank">Bloglines</a>, a now defunct feed aggregator. FAC proposed a single boolean option to allow or deny news aggregators from republishing the feed, including it in search engines, etc.; an equivalent to a <code>robots.txt</code> file.</p>
<p>To use it within RSS and Atom feeds, you will need to add the namespace to the root tag as usual: <code>xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"</code>. You can then add the <code>access:restriction</code> element as a child of the root element, with the <code>relationship</code> attribute set to <code>allow</code> or <code>deny</code>. When the element is not set, <code>allow</code> will be assumed. If the feed had previously set <code>deny</code>, removing the element will still cause aggregators to keep assuming a denial; <code>allow</code> must be explicitly set to restore indexability.</p>
<pre>&lt;rss version="2.0" xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"&gt;
&lt;access:restriction relationship="deny" /&gt;
&lt;channel&gt;
&lt;!-- ... --&gt;
&lt;/channel&gt;
&lt;/rss&gt;</pre>
<pre>&lt;feed xmlns="http://www.w3.org/2005/Atom" xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"&gt;
&lt;access:restriction relationship="deny" /&gt;
&lt;!-- ... --&gt;
&lt;/feed&gt;</pre>
<p>Note that this is the only case I know of where an RSS extension adds a tag outside of both <code>&lt;channel&gt;</code> and <code>&lt;item&gt;</code>.</p>
]]></description>
</item>
<item>
<title>dozens of ~dozens' books</title>
<pubDate>Sun, 11 Sep 2022 23:13:12 +0200</pubDate>
<guid isPermaLink="false">dozens-books</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://git.tilde.town/dozens/books/raw/branch/main/feed.xml</link>
<description><![CDATA[
<p>~dozens, who never ceases to feed the monster feeding on feeds that I am, had allowed me a year ago to <a href="https://git.tilde.town/dozens/books/commit/b00b383411de888dfa6e76fdd9420d7af0a11ae8" target="_blank">add an RSS feed generator script</a> to <a href="https://git.tilde.town/dozens/books/" target="_blank">his <code>books</code> repository</a>.</p>
<p>This Git repo hosts <a href="https://git.tilde.town/dozens/books/src/branch/main/books.csv" target="_blank">a CSV file</a> exported from dozens' <a href="https://calibre-ebook.com/" target="_blank">Calibre</a> library. The file is also converted to a <a href="https://en.wikipedia.org/wiki/Recfiles" target="_blank">recfile</a>, and with my help to an RSS feed. This was set up after dozens shared some of his collection with <a href="https://friends.m455.casa/" target="_blank">the casakhstan</a>, and we got interested in it and any new additions to it.</p>
<p>If you are interested in a book found within this library, feel free to <a href="https://tilde.town/~dozens/#contact" target="_blank">contact ~dozens</a> to request one of the ebooks. <em>You wouldn't download an ebook, wouldn't you?</em></p>
]]></description>
</item>
<item>
<title>Astronomy Picture of the Day</title>
<pubDate>Sun, 18 Sep 2022 18:29:54 +0200</pubDate>
<guid isPermaLink="false">apod</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://apod.nasa.gov/apod.rss</link>
<description><![CDATA[
<p>Here's a pretty well-known feed of pretty images that are pretty great. Since 1995-06-16, every day, APoD gives you a new cool space pic. It's one of those nice, simple feeds that I like to have in my feedreader; I block out an hour of time to read through many posts in my reader, and will start with APoD among others to warm up.</p>
]]></description>
</item>
<item>
<title>LSL scripts from Outworldz</title>
<pubDate>Sun, 25 Sep 2022 02:03:17 +0200</pubDate>
<guid isPermaLink="false">outworldz-lsl-scripts</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://feeds.feedburner.com/LslScript</link>
<description><![CDATA[
<p>I have a list of over a hundred ideas for posts on this feed, and had the next post already planned out, but then I stumbled upon a feed that I clearly couldn't expect. I was trying to find the correct word for the servers that regroup other servers hosting virtual worlds, all compatible with Second Life. Those servers are called <em>hypergrids</em>, and each server grouped within them is called a <em>grid</em>. Each grid contains tiles, also called regions, which are one square kilometer of virtual world. All of this has existed long before companies tried to get involved in the <em>metaverse</em>, and long before cryptocurrency even began to exist. Those worlds are still active, although probably not as much as during Second Life's peak.</p>
<p>While looking for some sort of authoritative source for the definition of a hypergrid, I found <a href="https://outworldz.com/" target="_blank">Outworldz</a>, a website full of resources related to OpenSimulator, the server software that runs all of those worlds. Its name seems to be a pun on InWorldz, one of the largest commercial OpenSimulator grids, which has existed from 2010 to 2018 before shutting down and seemingly starting from scratch.</p>
<p>I am quite curious about those old virtual worlds, especially now with all this <em>metaverse</em> bullshit. I browsed around a bit and realized they provide an RSS feed of the LSL scripts shared on this website. LSL, or the Linden Scripting Language, is the scripting language made by Linden Lab for Second Life. Scripting is how most of the virtual worlds come to life; be it enabling automatic transactions, sending messages, embedding YouTube videos to create movie theaters, etc., LSL can become important quite fast if you want to do interesting things in OpenSim. So here it is, a feed that genuinely surprised me, full of interesting content for a community that sounds inactive today, but still definitely exists.</p>
]]></description>
</item>
<item>
<title>~lucidiot's ideas</title>
<pubDate>Mon, 03 Oct 2022 20:05:15 +0200</pubDate>
<guid isPermaLink="false">lucidiot-ideas</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tilde.town/~lucidiot/ideas/rss.xml</link>
<description><![CDATA[
<p>I have a lot of ideas, and a lot of projects. I feel like it is a waste to never act on those ideas, even though they are not that useful or motivating to me, and I struggle to end projects that are not completed because of the <a href="https://en.wikipedia.org/wiki/Sunk_cost#Fallacy_effect" target="_blank">sunk cost fallacy</a>. to lighten the weight of giving up on some ideas or some projects, I started an <em>ideas</em> page, in which I list the ideas I had, and sometimes mention some research I made on them or a project that I abandoned, and why I gave up. It caught the interest of some tilde.town members and I now advocate for everyone to have their own ideas page. To follow the trend of the <a href="https://nownownow.com/" target="_blank"><code>/now</code> page</a> or <a href="https://uses.tech/" target="_blank"><code>/uses</code> page</a>, this could become the <code>/ideas</code> page on your personal website.</p>
<p>I made my ideas page into an RSS feed after I rewrote the page so it would be generated from a <a href="https://en.wikipedia.org/wiki/Recfiles" target="_blank">recfile</a>, so here it is. If you have made your own ideas page, feel free to <a href="https://tilde.town/~lucidiot/contact.html" target="_blank">let me know</a> and I'll feature you in the section at the bottom of <a href="https://tilde.town/~lucidiot/ideas/" target="_blank">the webpage</a>.</p>
]]></description>
</item>
<item>
<title>Categorizing hundreds of feeds</title>
<pubDate>Sun, 09 Oct 2022 18:14:16 +0200</pubDate>
<guid isPermaLink="false">categories</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<description><![CDATA[
<p>I am now reaching nearly 230 feeds in my feedreader, and things are starting to get a little bit out of hand. While I can deal with the backlog of posts just fine as long as I use my feedreader every day, and am slowly working my way towards some sort of <em>Inbox Zero</em>, I was feeling like there could be much better ways to categorize my feeds so that I can process them more efficiently. I was thinking that I could put feeds into categories that would let me know how to read those feeds, with which amount of attention and which mindset.</p>
<p>For example, feeds that just have pretty images don't need much <a href="https://en.wikipedia.org/wiki/Spoon_theory" target="_blank">spoons</a> to process, while blogs with in-depths reflections on some topics will take more time to read. I can skim through some feeds while barely reading the post titles, but some other feeds have items that are actual tasks to complete. I have seen various posts about people saying you should weed out as much as you can from your feedreader because you will never read everything, but the point is not <em>always</em> to read everything.</p>
<p>When I was doing my categorizing, I had been asked on IRC about which categories I use and why, so this post is a more thought-out reply.</p>
<p>I am probably not fully done with categorizing, but I got a pretty good list right now. My current list of categories does represent how I use my feed reader pretty well, and over 90% of the feeds have a category right now. Here's a summary of those categories:</p>
<dl>
<dt>Aggregators (10 feeds)</dt>
<dd>Feeds whose items are mainly reposts from other blogs, or lists of links, etc.; those either send me down random rabbit holes that might lead to subscribing to moar feeds, or I can just skim through them. I usually do a first pass over them when I am going through all of my unread articles just to skip the posts that I want to skip, and leave the more interesting reads for later. I later come back to this category to go through the links and read everything else.</dd>
<dt>Alpine upstreams (13 feeds)</dt>
<dd>Feeds for Git tags and releases on GitHub, GitLab or Gitea instances. I maintain some Alpine packages, so I stay up to date on the new releases using those. I only mark those items as read once I have completed the relevant Alpine package's upgrade.</dd>
<dt>Comics (9 feeds)</dt>
<dd>Just webcomics; images with usually funny text in it. When I just want to reduce my unread articles count quickly without much thinking, I can go through these.</dd>
<dt>dozens (19 feeds)</dt>
<dd>An entire category dedicated to the feeds of just one person. ~dozens has blessed me with the highest amount of feeds from one author. Most of the feeds are from various of his accounts, like on Goodreads, Gitea, archive.org, etc., and I can usually skim through these, but there are multiple blogs in there.</dd>
<dt>EU Bookshop (4 feeds)</dt>
<dd>I had mentioned before that the Publications Office of the European Union has an online store that provides RSS feeds of search results. There are a few keywords I monitor, such as USB in case they ever decide to release free USB keys again, so I keep them here.</dd>
<dt>Friends (25 feeds)</dt>
<dd>All the feeds from friends other than ~dozens. Quite the hodgepodge of feeds from various online accounts and of blogs that take longer to read.</dd>
<dt>Images (6 feeds)</dt>
<dd>Feeds with just some pretty images, and sometimes some interesting facts about those images. Very quick to read through.</dd>
<dt>ITSB (44 feeds)</dt>
<dd>A subset of the many feeds I generate in my <a href="https://tilde.town/~lucidiot/itsb/" target="_blank">ITSB</a> project. I like to sometimes read the accident reports I get there, but most of the subscriptions are just so I can check that the feeds appear to be behaving normally and detect errors, so I can just mark the entire category as read if I am not in the mood.</dd>
<dt>lucidiot (15 feeds)</dt>
<dd>My own feeds, some generated by my own scripts, and some from my online accounts. Just like ITSB, this lets me troubleshoot them, or at least be aware of what I am sending out to the rest of the world.</dd>
<dt>Podcasts (3 feeds)</dt>
<dd>I'm not too much of a fan of podcasts, but some friends have started them, so I keep there separately. They usually require me to have a long chunk of free time available, because I am simply unable to listen to English podcasts while doing anything else, unless I decide to just not try to understand what is being said.</dd>
<dt>Services (7 feeds)</dt>
<dd>Status pages or blogs of various services I use, such as <a href="https://escargot.chat" target="_blank">Escargot</a> or OpenStreetMap. I quickly read through them just to stay updated on those services and know about any action I might need to take.</dd>
<dt>Tech blogs (27 feeds)</dt>
<dd>Various blogs related to programming, electronics, networking, server administration, etc. Categorizing made me realize that I think I just have too many of those, and often don't care that much about the topics in those blogs, mainly because I care less and less about the state of modern web development. Each time I go through those, I take some time to think about whether or not I want to keep the feeds in here.</dd>
<dt>Weeds (6 feeds)</dt>
<dd>Short for <em>web feeds</em>, a bunch of feeds made by my friends and providing RSS-only content. Those are much less formal than blogs, post irregularly, and encourage conversations between us since we all subscribe to each other.</dd>
<dt>Writing (8 feeds)</dt>
<dd>Anything that could possibly relate to writing, mostly in a notebook, or that invites me to write in my notebooks for any reason. This includes blogs about bullet journaling, handwriting, productivity, personal development, etc., and I would like to have more of those in my reader.</dd>
<dt>YouTube (17 feeds)</dt>
<dd>All my YouTube subscriptions. This works a lot better than actually subscribing to a channel on YouTube since you don't have to care about <em>the bell</em>; you will get notified of each video every time. This also means I don't need a Google account for this. I usually go through this category during lunch break when I work from home.</dd>
<dt>Uncategorized (15 feeds)</dt>
<dd>Those are blogs that just do not fit anywhere else. Maybe they go on about completely random topics each time, or they would just be the only feed in their category (for example, I could have <em>Transportation</em> and <em>Space</em> with one feed each), or they live at the intersection of two or more categories and I haven't decided where to put them yet. Alternatively, I might just be wondering whether I should still be subscribing to them, so I don't even bother to categorize them.</dd>
</dl>
<p>Some of those categories explain why I am not yet sharing an OPML export of the feeds I currently subscribe to; some feeds have a private token embedded in the URL for authentication, or some are not meant to be shared too publicly. Managing a custom OPML export from TinyTinyRSS would be a bit too much work whenever I subscribe or unsubscribe from a feed. Instead, you'll just get <a href="https://envs.net/~lucidiot/rsrsss/opml/feeds.opml">the feeds featured in RSRSSS</a> as an OPML file, as I slowly work my way through my subscriptions or other feeds that I find interesting and share them on here.</p>
]]></description>
</item>
<item>
<title>NASA Earth Observatory</title>
<pubDate>Sun, 16 Oct 2022 02:31:48 +0200</pubDate>
<guid isPermaLink="false">nasa-earth</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://earthobservatory.nasa.gov/feeds/earth-observatory.rss</link>
<description><![CDATA[
<p>The NASA Earth Observatory is a website meant to share various satellites images of the Earth that NASA collects, especially to raise awareness about climate change or show the extend of large-scale events such as wildfires and droughts. You get to see a whole bunch of pretty pictures, and then realize that most of this just highlights the disaster that we just keep on causing. What a great thing to have in my feedreader!</p>
<p>There are a few <a href="https://earthobservatory.nasa.gov/subscribe/feeds" target="_blank">more specific feeds</a> if you want just one category of their posts.</p>
]]></description>
</item>
<item>
<title>dozens dreams</title>
<pubDate>Sun, 23 Oct 2022 12:46:33 +0200</pubDate>
<guid isPermaLink="false">dozens-dreams</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tilde.team/~dozens/dreams/rss.xml</link>
<description><![CDATA[
<p>When the COVID19 pandemic hit, ~dozens started to get different dreams than usual, and started to log them in a blog. <a href="https://tilde.team/~dozens/dreams/about.html" target="_blank">The about page</a> has some interesting information on the why and the how of this blog.</p>
<p>I have been logging my dreams on and off for multiple years in my notebooks. I had intially started that as a quest to do lucid dreaming, a quest that I gave up on because <a href="https://www.world-of-lucid-dreaming.com/reality-checks.html" target="_blank">reality checks</a> are a really difficult routine to get into and they weren't bringing much of a result. The <em>lucid</em> in <em>lucid dreaming</em> was the original inspiration for my nickname. I kept on logging my dreams after that because I was still interested in remembering my dreams, and I nowadays also use this as an excuse to write at least one line a day in a notebook, since that is a habit I want to keep; when I do not remember a dream, I will still write <em>I did not remember my dreams</em>.</p>
<p>Getting those random dreams in my feedreader is what got me started in posting my own dream logs <a href="https://envs.net/~lucidiot/dreams/">on my wiki</a>. I might end up separating them at some point, as I am slowly working my way through all the dreams I have logged over the years in many notebooks, translating them and obfuscating them for public consumption.</p>
<p>My dreams almost always involve me with some family members or friends in a very bizarre situation, but still in keeping with most of the laws of physics, whereas dozens' dreams appear to have a much more malleable world. That might be related to me being much less exposed to fantasy or RPGs and having much less creativity.</p>
]]></description>
</item>
<item>
<title>The RSSoker</title>
<pubDate>Sun, 30 Oct 2022 14:54:21 +0100</pubDate>
<guid isPermaLink="false">rssoker</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<description><![CDATA[
<p>I am usually known by my friends as that one guy who keeps on telling you to make an RSS feed out of everything. You made a blog? Feed. A list of any kind? Feed. A calendar? Feed. You have anything public that could possibly get some updates over time and could be followed regularly? Feed. <a href="https://redirect.invidious.io/watch?v=0jMHMtk01-g&amp;t=112" target="_blank">We must feed.</a></p>
<p>dozens, now a recurring character in this feed, summarized me in an original way:</p>
<blockquote>
<p>there's an rss devil on my shoulder telling me to make new feeds all the time, and it is lucidiot. on my other shoulder is an rss angel and it is also lucidiot and it is also always telling me make new feeds.<br />
like how in some storylines the joker just wants batman to be the very best batman he can be. lucidiot is the rss joker to my compulsive writing batman.</p>
<p>rssoker: everyone is just one bad day away from making another rss feed<br />
rssatman: you're wrong rssoker<br />
rssoker: HAHAHAHAHAH</p>
</blockquote>
]]></description>
</item>
<item>
<title>The Old New Thing</title>
<pubDate>Sun, 06 Nov 2022 22:03:28 +0100</pubDate>
<guid isPermaLink="false">old-new-thing</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://devblogs.microsoft.com/oldnewthing/feed/</link>
<description><![CDATA[
<p>This is the only Microsoft-related blog that I currently subscribe to: a nearly 20 years old blog from Raymond Chen, a software engineer working on Windows. The Old New Thing has nearly-daily posts, some sharing key learnings from replying to customer support requests, some forming long series describing entire CPU architectures, and some just general C++ or Windows related tips. Considering that I do not do any assembly code or C++, the more interesting content for me is either when some bits of Windows history are inserted into the post, or some complex programming concept that I rarely get to meet in my usual programming gets explained. Those posts are still posts that I usually skim through without understanding half of them anyway.</p>
<p>This blog is mostly known for its random posts on Microsoft jargon (which Chen calls <em>Microspeak</em>) or various pieces of Windows trivia, such as <a href="https://devblogs.microsoft.com/oldnewthing/20121218-00/?p=5803" target="_blank">why Pinball was removed from Windows</a>, and <a href="https://devblogs.microsoft.com/oldnewthing/20181221-00/?p=100535" target="_blank">why it cannot come back even though they want to</a>. More recently, a post on <a href="https://devblogs.microsoft.com/oldnewthing/20220816-00/?p=106994" target="_blank">a song that made hard drives crash</a> resulted in <a href="https://nvd.nist.gov/vuln/detail/CVE-2022-38392" target="_blank">a vulnerability</a> being reported.</p>
]]></description>
</item>
<item>
<title>NASA Image of the Day</title>
<pubDate>Sun, 13 Nov 2022 19:43:38 +0100</pubDate>
<guid isPermaLink="false">nasa-iotd</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss</link>
<description><![CDATA[
The last of the three NASA feeds I currently have in my RSS reader: a more general feed of images related to NASA's various activities. It mostly mentions space, but there are mentions of aeronautics, or various bits of NASA-related events of history. I find it interesting to get random reminders that NASA isn't just about space.
]]></description>
</item>
<item>
<title>COOELST CAT COMCIX</title>
<pubDate>Sun, 20 Nov 2022 03:24:55 +0100</pubDate>
<guid isPermaLink="false">coolmxmuffin</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://coolmxmuffin.tumblr.com/rss</link>
<description><![CDATA[
Quite a few webcomics out there are using Tumblr, sometimes behind custom domains. This one is a pretty simple webcomic that someone made and that I somehow stumbled upon one day, possibly just by seeing a link to one of the posts on the Fediverse. It is intentionally poorly drawn and written and that just adds to the jokes, and usually talks about topics related to the queer community or to neurodivergent people, which is what you commonly find on Tumblr. It posts quite irregularly, but it is nice to see a simple and funny post from time to time in my feedreader, and the intentional low quality does remind you that you do not have to make something that's perfect for it to be enjoyable or interesting.
]]></description>
</item>
<item>
<title>status.cafe</title>
<pubDate>Sun, 04 Dec 2022 18:44:52 +0100</pubDate>
<guid isPermaLink="false">status.cafe</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://status.cafe/feed.atom</link>
<description><![CDATA[
<p>Through the endless treasure trove of <a href="http://tilde.town/~dozens/feeds/" target="_blank">feeds</a> that is dozens, I am guaranteed not to ever be running out of feeds to post about on here. Thanks to him, I discovered <a href="https://status.cafe">status.cafe</a>, a place to share your current status in 140 characters or less. Basically Twitter, but without a concept of notifications or following others; this is a lot more about publishing content than receiving it.</p>
<p>Each status includes an emoji to summarize your current mood or state, and if you know how to use the browser's developer tools, you can make it use any Unicode character you want. You can show off your current status emoji using a badge, and I have put <a href="https://status.cafe/users/lucidiot/badge.png" target="_blank">mine</a> among the many others on <a href="https://tilde.town/~lucidiot/" target="_blank">my tilde.town page</a>.</p>
<p>status.cafe provides a whole bunch of Atom feeds; you can subscribe to <a href="https://status.cafe/feed.atom" target="_blank">a feed of everyone at once</a> or the specific feed of each user as <code>https://status.cafe/users/[username].atom</code>. For example, here is <a href="https://status.cafe/users/lucidiot.atom" target="_blank">mine</a>.</p>
<p>While exploring the information superhighway to learn more about other feeds I wanted to post about on here, I also stumbled upon <a href="https://www.imood.com/" target="_blank">imood</a>, which possibly was a source of inspiration for status.cafe. Statuses are called moods, and have both a personal mood (some sentence that the user writes) and a base mood selected from a set. There are no feeds on this one though, so status.cafe is clearly superior.</p>
]]></description>
</item>
<item>
<title>Return to service</title>
<pubDate>Sun, 21 May 2023 13:48:08 +0200</pubDate>
<guid isPermaLink="false">return-to-service</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Meta</category>
<description><![CDATA[
<p>Due to a long list of personal reasons, I stopped my weekly posting on this feed just a few weeks before the second anniversary of this feed. I have been trying to get back to posting regularly to my various websites, including this feed, with mediocre results. My mental health isn't good enough for me to promise any kind of regular posting from now on, but I will still be making some occasional posts on this feed.</p>
<p>I am building a small backlog of posts to hopefully allow me to post <em>somewhat</em> regularly, using something even worse than just writing XML by hand as I usually do in here. I created a database using LibreOffice Base on a whim, just because I wanted to play with that one evening, and ended up inserting about 50 feeds that I wanted to post and creating a form to start writing short descriptions of each feed to later post them.</p>
<p>Today, I somehow conjured the energy to rewrite the <abbr title="eXtensible Stylesheet Language Transformations">XSLT</abbr> that powers the HTML rendering of this feed, on browsers that do not support RSS feeds natively. It looks more refined, and I have some ideas for future extensions such as supporting enclosures, GeoRSS, Event RSS and more. It now also includes some optional JavaScript that fixes the <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#d-o-e">HTML unescaping issue</a> on Firefox, making the feed much more readable. After finishing a first version of this new theme, I decided to finally post again and announce this possible return.</p>
<p>One of the many reasons why i have so little energy to post is that i feel like most of what i do is meaningless or not interesting to anyone, which is probably to be expected when i explicitly choose to ignore <abbr title="search engine optimization">SEO</abbr> or just when i work on very niche topics. if you want to help me fight the negative voices in my head, feel free to <a href="https://tilde.town/~lucidiot/contact.html" target="_blank">reach out to me</a>. Even just a single sentence to tell me you are reading me is hugely appreciated.</p>
]]></description>
</item>
<item>
<title>Hundred Rabbits</title>
<pubDate>Sun, 28 May 2023 15:11:40 +0200</pubDate>
<guid isPermaLink="false">100r</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://100r.co/links/rss.xml</link>
<description><![CDATA[
<p>Rek Bell and Devine Lu Linvega are two artists living together on a sailboat called Pino, forming the artist collective known as Hundred Rabbits, often abbreviated 100r. They publish their sailing experiences and show a particularly minimalist aesthetic in their various artistic projects, and got quite popular. They have a monthly newsletter where they report updates on their various projects and on the boat, and this newsletter has an RSS feed.</p>
<p>I have known about 100r for a while, but only follow them by reading this feed because their creations and ideas are often incompatible with my life; I do not live on a boat and do not really enjoy the kind of very minimalist, colorless aesthetic that they follow. Getting those quick monthly reminders of the existence of the concept of permacomputing, and taking a few minutes to watch those people living in what looks like an alternate universe completely separate from mine, can still be interesting in small doses.</p>
]]></description>
</item>
<item>
<title>dozens css art</title>
<pubDate>Sun, 04 Jun 2023 14:52:23 +0200</pubDate>
<guid isPermaLink="false">dozens-css-art</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://tilde.town/~dozens/cssart/feed.xml</link>
<description><![CDATA[
Here is another random project that ~dozens made. As always with every single thing he makes, there's an RSS feed for it! This one has a few webpages showing some art made with CSS properties, with said properties changing every few seconds so you can stare at them for a little while.
]]></description>
</item>
<item>
<title>forum.status.cafe</title>
<pubDate>Sun, 11 Jun 2023 09:02:36 +0200</pubDate>
<guid isPermaLink="false">forum.status.cafe</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://forum.status.cafe/feed.atom</link>
<description><![CDATA[
<p>I mentioned status.cafe before on this feed, but not its forum. It runs a homemade message board system called <a href="https://git.sr.ht/~m15o/vpub" target="_blank">vpub</a> which is quite simple and provides Atom feeds:</p>
<ul>
<li><a href="https://forum.status.cafe/feed.atom" target="_blank">Every single post</a></li>
<li><a href="https://forum.status.cafe/topics/3/feed.atom" target="_blank">All posts in one topic</a></li>
<li><a href="https://forum.status.cafe/boards/2/feed.atom" target="_blank">All posts in one board</a></li>
</ul>
<p>It could also have feeds for all posts by a user or all posts within a forum (a group of boards), but having the option of following this messageboard using a feedreader is still quite neat.</p>
<p>There also used to be a vpub instance dedicated to vpub itself at <a href="https://vpub.miso.town" target="_blank">vpub.miso.town</a>, but it appears to be offline now. m15o, vpub's creator, said <a href="https://forum.status.cafe/topics/45#212" target="_blank">they are not working on it</a> as well.</p>
]]></description>
</item>
<item>
<title>Foxes in Love</title>
<pubDate>Sun, 18 Jun 2023 18:46:40 +0200</pubDate>
<guid isPermaLink="false">foxes-in-love</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://foxes-in-love.tumblr.com/rss</link>
<description><![CDATA[
Since I recently joined Tumblr again, I do not really need those feeds much, but I still do follow some Tumblr blogs in my feedreader. Among them is this pretty well-known comic involving two foxes being adorable or funny. Just like the other comics, it makes for a nice break after reading longer articles in Liferea.
]]></description>
</item>
<item>
<title>From the Pen Cup</title>
<pubDate>Tue, 27 Jun 2023 00:09:23 +0200</pubDate>
<guid isPermaLink="false">fromthepencup</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://fromthepencup.wordpress.com/feed/</link>
<description><![CDATA[
Here's one of the few blogs I started following when I was looking for more blogs on handwriting. This blog focuses mostly on fountain pens, which I do not use, but also includes posts about writing in general, about notebooks, etc. I also like that this blog is managed by someone older than most of the bloggers in my feedreader, as this brings some more interesting thoughts.
]]></description>
</item>
<item>
<title>Lin.ear th.inking</title>
<pubDate>Sun, 02 Jul 2023 11:40:11 +0200</pubDate>
<guid isPermaLink="false">linear-thinking</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://lin-ear-th-inking.blogspot.com/feeds/posts/default?alt=rss</link>
<description><![CDATA[
<p>Dealing with polygons on images at work has made me discover the world of GIS, and that's how I ended up discovering this blog. This is the blog of Martin Davis, the creator of the Java Topology Suite (JTS).</p>
<p>The JTS and its C++ port called GEOS power pretty much every geographical information system under the sun. I don't understand much about the math behind GIS stuff, but this blog showcases some of the new features in the JTS with some simple examples. It can help me suggest improvements at work, or get new ideas for weird projects since I like playing with maps now.</p>
<p>This feed is also available as an <a href="https://lin-ear-th-inking.blogspot.com/feeds/posts/default?alt=atom" target="_blank">Atom feed</a>.
]]></description>
</item>
<item>
<title>You wouldn't download a planet</title>
<pubDate>Sun, 16 Jul 2023 12:06:35 +0200</pubDate>
<guid isPermaLink="false">planet-osm</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://planet.openstreetmap.org/pbf/planet-pbf-rss.xml</link>
<description><![CDATA[
<p>There are a whole lot of feeds for OpenStreetMap, and since I like both OpenStreetMap and, of course, feeds, I will be talking about a bunch of them over multiple posts. To start with, here's a feed of torrents that you can put into any BitTorrent client that supports feeds, like <a href="https://deluge-torrent.org/" target="_blank">Deluge</a>, to automatically download a weekly export of the entire map. That would be over 1.7 terabyte of <a href="https://wiki.openstreetmap.org/wiki/OSM_XML" target="_blank">OpenStreetMap XML</a> data, but they provide a better format called <a href="https://wiki.openstreetmap.org/wiki/PBF_Format" target="_blank">PBF</a> based on <a href="https://protobuf.dev/" target="_blank">protobuf</a>, that reduces this down to about 70 gigabytes.</p>
<p>Multiple RSS feeds are available, to get the PBF version, the BZ2-compressed XML version, or the entire history of the map and not just its current state. Those are documented <a href="https://wiki.openstreetmap.org/wiki/Planet.osm#BitTorrent_RSS.2FAtom_feed" target="_blank">on the OSM wiki</a>.</p>
<p>I really like the name of this thing. <em>Planet</em>. You can just… download the whole planet. This is how far we've come as a society. Why stop at <a href="https://www.youtube.com/watch?v=NKJDk2w11H4" target="_blank">downloading a car</a> when you can download a planet?</p>
]]></description>
</item>
<item>
<title>The RSS Advisory Board is still alive, and is 20 years old</title>
<pubDate>Sun, 23 Jul 2023 06:05:46 +0200</pubDate>
<guid isPermaLink="false">rss-board-mastodon</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">News</category>
<link>https://mastodon.social/@rssboard.rss</link>
<description><![CDATA[
<p>The RSS Advisory Board, the entity that has been publishing and updating the <a href="https://www.rssboard.org/rss-specification" target="_blank">RSS 2.0 specification</a>, has been mostly inactive for many years. Fairly recently, Rogers Cadenhead started posting again on <a href="https://www.rssboard.org/" target="_blank">their blog</a>, and even more recently, they opened <a href="https://mastodon.social/@rssboard" target="_blank">a Mastodon account</a>. You can follow <a href="http://feeds.rssboard.org/rssboard" target="_blank">the board's blog</a> or <a href="https://mastodon.social/@rssboard.rss" target="_blank">its fediverse account</a> using your feedreader of course.</p>
<p>Just as I noticed this, it turns out that <a href="https://www.rssboard.org/news/220/rss-advisory-board-just-turned-20" target="_blank">the board has turned 20</a> just a few days ago. Happy birthday!</p>
<p>Discovering this also made me find out that Dave Winer is also on the Fediverse, and is <a href="https://w3c.social/@davew@mastodon.social/110559652591295897" target="_blank">just as bitter as he is rumored to be</a>. I guess the old days of the wars between <abbr title="RDF Site Summary">RSS</abbr> 1, <abbr title="Really Simple Syndication">RSS</abbr> 2 and Atom are still not over.</p>
]]></description>
</item>
<item>
<title>piclog</title>
<pubDate>Sun, 30 Jul 2023 12:04:46 +0200</pubDate>
<guid isPermaLink="false">piclog</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://piclog.blue/feed.php</link>
<description><![CDATA[
<p>From the author of <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#status.cafe" target="_blank">status.cafe</a> and <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#forum.status.cafe" target="_blank">vpub</a>, <a href="https://piclog.blue" target="_blank">piclog.blue</a> is a new service to share pics, embed them into a website, and get RSS feeds from them. Interestingly, unlike all of m15o's other projects up until now, this project provides RSS and not Atom feeds.</p>
<p>Probably the most exotic part of this image sharing service is that every image is highly compressed: no more than 400×400 pixels in size, and saved as JPEG with a quality of 5%. This probably makes hosting this service a lot easier in terms of bandwidth and storage space, and makes the images look blurry or less detailed. Most piclog users are status.cafe users, so it's interesting to see the photographic equivalent of the things I see fellow status.cafe users post regularly.</p>
<p>While you can get a feed of <a href="https://piclog.blue/feed.php" target="_blank">every photo from everyone</a>, you can also get feeds for each user, with <code>https://piclog.blue/user-feed.php?id=</code> followed by the integer ID of the relevant user. You can get this ID by opening their profile, since the same ID will be in the profile URL. Here's <a href="https://piclog.blue/user-feed.php?id=2" target="_blank">m15o's feed</a> for example.</p>
<p>As of posting this, the feeds unfortunately do not use <a href="https://www.rssboard.org/media-rss" target="_blank">Media RSS</a> or embed the image into the description as an <code>&lt;img&gt;</code> tag, so you will have to open each item in your browser to view the image with most feedreaders.</p>
]]></description>
</item>
<item>
<title>NTSB</title>
<pubDate>Thu, 10 Aug 2023 09:15:18 +0200</pubDate>
<guid isPermaLink="false">ntsb</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://tilde.town/~lucidiot/itsb/feeds/ntsb.xml</link>
<description><![CDATA[
<p>I already mentioned <a href="https://tilde.town/~lucidiot/itsb/" target="_blank">ITSB</a> multiple times in this feed, my project that generates hundreds of feeds for transport accident investigation reports. But this particular feed is worth a post in itself.</p>
<p>The NTSB is the one investigation agency I really must have in ITSB. It might just be the largest agency for transportation safety investigations worldwide, and anyone who ever watched a <em>Mayday</em> documentary or looked into plane crashes has heard of it. They produce the largest amount of reports out of all the agencies I found through ITSB.</p>
<p>Fortunately, they provided an official RSS feed for their released investigation reports. I'm using the past tense though, because they unfortunately decided to shut it down. The feeds were still available for a little while, but they would be completely empty. I have yet to see anyone ever sunsetting a feed properly, by adding a post to warn everyone for a few days before just killing the feed completely, so this issue went unnoticed for a while.</p>
<p>To generate a feed when there is no official one available, I usually just run <code>curl</code> on a webpage that lists investigation reports, then use <a href="https://github.com/ericchiang/pup" target="_blank">pup</a> to select some HTML elements and convert them to a JSON structure, then mess around with said JSON with <a href="https://stedolan.github.io/jq/" target="_blank">jq</a>, and finally convert that back into XML using <a href="https://pypi.org/project/xmltodict/" target="_blank">xmltodict</a>. But after looking around on the NTSB's website, I went for a much weirder method.</p>
<p>The NTSB provides a service called <a href="https://data.ntsb.gov/carol-main-public" target="_blank">CAROL</a>, a tool to search through all the investigation reports and safety recommendations the NTSB ever published. Getting a lot of structured data sounds a lot more interesting than having to parse the scant details I can get from unnecessarily complex HTML pages, so I wanted to use that as my source for my custom feed.</p>
<p>After a lot of experimenting, I ended up writing <a href="https://tildegit.org/lucidiot/itsb/src/branch/main/bin/ntsb-carol" target="_blank">a separate script</a> that exports 1 year of completed investigation reports as a large JSON file. I could have exported 10 or more years of reports, but that resulted in an extremely large RSS feed that would make most feedreaders blow up, so I only got one year.</p>
<p>I then use <a href="https://tildegit.org/lucidiot/itsb/src/branch/main/jq/ntsb.jq" target="_blank">a 671 lines long jq script</a> to process this JSON file into an RSS feed, including as much information as I can within the <code>&lt;description&gt;</code> so that you sometimes do not need to read the PDF report at all.</p>
<p>This mess results in a feed that is far, far better than any other feed I have in ITSB, especially any official feed. If every webmaster wants to remove RSS and replace it with newsletters, since that's what I gathered from my few attempts at reaching out to those agencies, maybe the real solution is to push for more open data instead. Let the people who know and use RSS make proper RSS feeds without scraping your website…</p>
]]></description>
</item>
<item>
<title>The Cramped</title>
<pubDate>Sun, 13 Aug 2023 15:39:13 +0200</pubDate>
<guid isPermaLink="false">thecramped</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.thecramped.com/feed/</link>
<description><![CDATA[
<p>As I had mentioned before in this feed, when I look over my over two hundred feeds in my reader, I regularly get the feeling I should have less technology-related blogs in there, and more feeds related to my other interests such as writing. I will probably have some cleaning to do soon to reduce the share of tech blogs that no longer spark joy.</p>
<p>A while ago, I tried to look for more blogs related to stationery, handwriting, etc., and I found <em>The Cramped</em>. This blog evolved a bit over time, and nowadays the author occasionally shares other people's posts related to writing, notebooks, writing in notebooks, personal knowledge management, etc. This kind of feed is nice to have if I want to discover more blogs! I subscribed to maybe two or three already thanks to it.</p>
]]></description>
</item>
<item>
<title>International Institute of Food-Related Protocols</title>
<pubDate>Sun, 20 Aug 2023 13:54:07 +0200</pubDate>
<guid isPermaLink="false">iifrp</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://iifrp.org/feed/all-rfcs.xml</link>
<description><![CDATA[
<p>Possibly inspired by <a href="https://tools.ietf.org/html/draft-lohsen-ip-burrito-00" target="_blank">IP over Burrito Carriers</a>, the <abbr title="International Institute of Food-Related Protocols">IIFRP</abbr> is a project with little activity where RFCs get published to standardize food in a manner similar to Internet standards. They provide a few feeds to feed standard food to your feedreader, all listed on their <a href="https://iifrp.org/feed" target="_blank">feeds page</a>:</p>
<ul>
<li>Their <a href="https://iifrp.org/feed.xml" target="_blank">blog posts</a>, of which there currently are none;</li>
<li><a href="https://iifrp.org/feed/all-rfcs.xml" target="_blank">All RFCs in any state</a>;</li>
<li>Only the <a href="https://iifrp.org/feed/adopted-rfcs.xml" target="_blank">adopted RFCs</a>;</li>
<li>Only the <a href="https://iifrp.org/feed/proposed-rfcs.xml" target="_blank">drafts and proposed RFCs</a>.</li>
</ul>
<p>A coworker suggested that maybe we should have a standard for french tacos, since many places selling french tacos commit blasphemy by adding veggies in them, sometimes even adding them <em>by default</em> without warning you. I have some experience <a href="https://tildegit.org/casa/bikeshed/src/branch/main/rfb" target="_blank">writing joke RFCs</a>, so that's something to consider.</p>
]]></description>
</item>
<item>
<title>The Olognion</title>
<pubDate>Thu, 31 Aug 2023 19:17:10 +0200</pubDate>
<guid isPermaLink="false">olognion</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.theolognion.com/feed/</link>
<description><![CDATA[
<p>A mix between <em>The Onion</em> and <em>O(log n)</em>, this website is pretty much The Onion for developers. The satirical news reports are published much less often than before but do make me smile a little each time, before the usual existential dread sets back in.</p>
]]></description>
</item>
<item>
<title>Let your haters nuke you over RSS</title>
<pubDate>Sun, 03 Sep 2023 18:05:52 +0200</pubDate>
<guid isPermaLink="false">icbm</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial</category>
<link>https://web.archive.org/web/20130307033513/http://postneo.com/icbm/</link>
<description><![CDATA[
<p>One of the most primitive ways you can specify geospatial information within an RSS feed is also one of the oldest, and it is supported by the W3C validator among others. The <code>icbm</code> XML namespace allows you to specify an <a href="https://en.wikipedia.org/wiki/ICBM_address" target="_blank">ICBM address</a> in either the <code>&lt;channel&gt;</code> or the <code>&lt;item&gt;</code> elements, allowing you to relate a location to either the entire RSS feed or a single specific item on that feed.</p>
<figure>
<pre>
&lt;rss version="2.0" xmlns:icbm="http://postneo.com/icbm"&gt;
&lt;channel&gt;
&lt;!-- ... --&gt;
&lt;icbm:latitude&gt;30.0301&lt;/icbm:latitude&gt;
&lt;icbm:longitude&gt;32.5776&lt;/icbm:longitude&gt;
&lt;item&gt;
&lt;!-- ... --&gt;
&lt;icbm:latitude&gt;31.5077090&lt;/icbm:latitude&gt;
&lt;icbm:longitude&gt;-82.3115156&lt;/icbm:longitude&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</pre>
<figcaption>Example of a point added to an RSS channel and item using the ICBM namespace</figcaption>
</figure>
<p>With this method, you can therefore specify a location where someone may send a nuke if they have been particularly angered by something you published on that feed. Or more commonly, you might want to set a location relevant to the feed, like the location of the <a href="https://xkcd.com/703/" target="_blank">tautology club</a> whose blog has a feed for, or the location of something mentioned within the feed.</p>
<p>There are other, more recent and more standard methods to refer to geographic coordinates in an RSS feed, and not just specific points. We will go over those some other time.</p>
]]></description>
<icbm:latitude>33.6772827</icbm:latitude>
<icbm:longitude>-106.4753787</icbm:longitude>
</item>
<item>
<title>Adding geographical coordinates peacefully</title>
<pubDate>Sun, 10 Sep 2023 17:44:24 +0200</pubDate>
<guid isPermaLink="false">geo</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial</category>
<link>https://www.w3.org/2003/01/geo/</link>
<description><![CDATA[
<p>In <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#icbm">the previous post on geospatial stuff in RSS</a>, I showed how to define an <a href="https://en.wikipedia.org/wiki/ICBM_address" target="_blank">ICBM address</a>, to which heads of states may send a nuke if they did not appreciate your post. At around the same time as the <code>icbm</code> namespace got created in a blog post for RSS 2.0, the Semantic Web Interest Group of the W3C devised a <a href="https://www.w3.org/2003/01/geo/" target="_blank">Basic Geo Vocabulary</a> that allows for something very similar to ICBM addresses, but that does not require missiles and is integrated into RDF. It also adds the ability to specify an optional altitude, in meters.</p>
<p>This is meant to be used in RDF, so you would probably normally use this in a <abbr title="RDF Site Summary">RSS</abbr> 1.0 feed, but as with many other RDF namespaces, nothing really stops you from integrating that into RSS 2.0 or Atom, and many people have done so already.</p>
<figure>
<pre>
&lt;rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"&gt;
&lt;channel&gt;
&lt;!-- ... --&gt;
&lt;geo:lat&gt;30.0301&lt;/geo:lat&gt;
&lt;geo:long&gt;32.5776&lt;/geo:long&gt;
&lt;item&gt;
&lt;!-- ... --&gt;
&lt;geo:lat&gt;31.5077090&lt;/geo:lat&gt;
&lt;geo:long&gt;-82.3115156&lt;/geo:long&gt;
&lt;!-- It's Moon time. --&gt;
&lt;geo:alt&gt;384400000&lt;/geo:alt&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</pre>
<figcaption>Example of a point added to an RSS channel and item using the W3C Geo namespace</figcaption>
</figure>
<hr />
<p>Two years later, in April 2005, GeoURL.org, a service that used to allow finding websites by their associated geographical location, <a href="https://web.archive.org/web/20070323023116/http://geourl.org:80/news/2005/04/26/rssplus.html" target="_blank">introduced the <code>geourl</code> namespace</a>, adding another duplicate namespace on top of <code>icbm</code> and <code>geo</code>. I mention it here too because the W3C validator supports all three namespaces!</p>
<p>You can use it with <code>xmlns:geourl="http://geourl.org/rss/module/"</code> and the <code>&lt;geourl:latitude&gt;</code> and <code>&lt;geourl:longitude&gt;</code> elements. I would however advise against using it as it increases the complexity for feed parser and feed reader developers; prefer the RDF <code>geo</code> namespace instead, which is more widely known.</p>
<p>And as a last piece of advice, do not mix the <code>icbm</code>, <code>geo</code> and <code>geourl</code> namespaces within the same channel or item, even if you intend to represent multiple coordinates at the same time! There are more complex but more flexible alternatives, which we will see in later posts, that allow to go beyond a single point.</p>
]]></description>
<geo:lat>40.8953768</geo:lat>
<geo:long>-73.1427788</geo:long>
<geo:alt>49</geo:alt>
</item>
<item>
<title>Please the geospatial nerds with GeoRSS Simple</title>
<pubDate>Mon, 18 Sep 2023 16:01:43 +0200</pubDate>
<guid isPermaLink="false">georss-simple-1</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial/GeoRSS</category>
<link>https://docs.ogc.org/cs/17-002r1/17-002r1.html</link>
<description><![CDATA[
<p><a href="https://envs.net/~lucidiot/rsrsss/feed.xml#geo" target="_blank">Previously on this feed</a>, we saw how to refer to geospatial locations using the ICBM, W3C Geo and GeoURL namespaces. Today, we will be looking at how to refer to points again, but soon more than just points, thanks to <a href="https://docs.ogc.org/cs/17-002r1/17-002r1.html">GeoRSS</a>. There's a lot to cover with that standard, so expect a whole lot of geography in the coming weeks.</p>
<p>GeoRSS is a standard that was developed by a mix of geospatial and syndication people and released in 2006 on georss.org. That website is now gone, but of course, <a href="https://web.archive.org/web/20200909171629/http://georss.org/" target="_blank">the Internet Archive's got our backs.</a> In 2017, that standard got republished by the Open Geospatial Consortium, the gods of geospatial standards, as OGC 17-002r1. I really like that quote from that version of the standard:</p>
<blockquote cite="https://docs.ogc.org/cs/17-002r1/17-002r1.html">
<p>The initial goal for designing and documenting GeoRSS was to keep the encoding of geography on the Web from fracturing into various encodings the way RSS ended up, with multiple similar implementations.</p>
<footer>—<a href="https://docs.ogc.org/cs/17-002r1/17-002r1.html" target="_blank"><cite>OGC GeoRSS Encoding Standard</cite></a>, 2017-08-18</footer>
</blockquote>
<p>Considering that the three namespaces we saw in the previous posts appeared before GeoRSS, and that georss.org <a href="http://web.archive.org/web/20190602115923/http://www.georss.org/w3c.html" target="_blank">mentions the W3C Geo namespace</a>, it doesn't seem like they were starting well. However, the few remaining feeds that I know of that include geospatial information do use GeoRSS only, so I guess they won in the end. The fact that only geospatial experts would be using geospatial coordinates within RSS feeds, and that most GIS software only supports GeoRSS or name all of their RSS support GeoRSS, must have helped.</p>
<p>GeoRSS defines two so-called "serializations", called <em>Simple</em> and <em>GML</em>. In this post, we will only consider GeoRSS Simple; GML requires us to delve deeper into the mess that is geospatial information, so we'll see that at some other point in time. The goal is to have most feed producers, those that are not geospatial experts, use GeoRSS Simple, which is simple enough to be understandable by them, and have geospatial experts use GML, which they probably prefer. You can convert from GeoRSS Simple to GeoRSS GML, but not necessarily the other way around.</p>
<p>Here's an example of yet another way to represent a point in an RSS feed, but using GeoRSS Simple this time:</p>
<figure>
<pre>
&lt;rss version="2.0" xmlns:georss="http://www.georss.org/georss"&gt;
&lt;channel&gt;
&lt;!-- ... --&gt;
&lt;georss:point&gt;18.5166670 33.6666670&lt;/georss:point&gt;
&lt;item&gt;
&lt;georss:point&gt;18.5166670,33.6666670&lt;/georss:point&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</pre>
<figcaption>Example of a point added to an RSS channel and item using GeoRSS Simple</figcaption>
</figure>
<p>Where the other namespaces use two distinct tags to represent both coordinates of a point, GeoRSS uses only one tag, which is defined as a list of real numbers. While using one or two tags does not matter much when using GPS coordinates, it does start to matter when you care a lot about altitude or work with other coordinate systems. GeoRSS Simple requires WGS84 (GPS) coordinates and represents elevation separately, so it won't ever matter in this serialization, but with GML, it will!</p>
<p>You may also note that in the first <code>point</code>, I used a space to separate both coordinates, whereas in the second one I used a comma. <a href="https://schemas.opengis.net/georss/1.0/schema-1.1/georss.xsd" target="_blank">The official <abbr title="XML Schema Definition">XSD</abbr></a> for GeoRSS Simple defines the point as holding a list of doubles (decimal numbers stored in 8 bytes) using the XSD <code>&lt;xs:list&gt;</code> element, which defines a list of items as being space-separated only. But <a href="https://docs.ogc.org/cs/17-002r1/17-002r1.html#20" target="_blank">section 7.3</a> of the OGC standard states that a comma is also acceptable, so anyone wishing to parse GeoRSS will have to take that into account.</p>
]]></description>
<georss:point>18.5166670 33.6666670</georss:point>
</item>
<item>
<title>Make pointier points with GeoRSS Simple</title>
<pubDate>Sun, 24 Sep 2023 21:02:51 +0200</pubDate>
<guid isPermaLink="false">georss-simple-2</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial/GeoRSS</category>
<link>https://docs.ogc.org/cs/17-002r1/17-002r1.html#26</link>
<description><![CDATA[
<p><a href="https://envs.net/~lucidiot/rsrsss/feed.xml#georss-simple-1" target="_blank">In a previous post</a>, I introduced GeoRSS Simple, a subset of GeoRSS, and described a fourth way to point to a location in your RSS feeds. With the W3C Geo namespace, we could add altitude information as well, but with GeoRSS, we can go even further beyond that:</p>
<figure>
<pre>
&lt;rss version="2.0" xmlns:georss="http://www.georss.org/georss"&gt;
&lt;channel&gt;
&lt;item&gt;
&lt;!-- ... --&gt;
&lt;georss:point&gt;-33.8735580,151.2344385&lt;/georss:point&gt;
&lt;georss:featureName&gt;Boat Syndication Australia&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;shop&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;
&lt;georss:elev&gt;5.25&lt;/georss:elev&gt;
&lt;georss:floor&gt;0&lt;/georss:floor&gt;
&lt;georss:radius&gt;4.5&lt;/georss:radius&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</pre>
<figcaption>A point added to an RSS item using GeoRSS Simple, with optional elements</figcaption>
</figure>
<p>Here's a description of all of those intriguing optional elements:</p>
<dl>
<dt><code>&lt;<dfn>georss:featureName</dfn>&gt;</code></dt>
<dd>The name of the thing you are referencing with that point. A feature is anything that has a geospatial location; a mountain, a country, a single atom, it doesn't matter.</dd>
<dt><code>&lt;<dfn>georss:featureTypeTag</dfn>&gt;</code></dt>
<dd>
<p>The type of that feature: whether it is a mountain, a country, etc. When unset, it defaults to <code>location</code>. There are no other defined values, as the intent was to let the community form its own taxonomy.</p>
<p>While neither the original website nor the OGC standard specify any restriction, the official XSD typed it as a <code>QName</code>, meaning an <a href="https://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-qualnames" target="_blank">XML qualified name</a>, or anything you can use as the name of an XML element, with or without a namespace prefix. This means you can use something like <code>sandwich:blt</code>, but not <code>food:sandwich:blt</code> because only one colon is allowed, and you cannot use spaces. All examples in both the original website and the OGC standard never use spaces, instead preferring <a href="https://en.wikipedia.org/wiki/Kebab_case" target="_blank">kebab-case</a>. So you should probably limit yourself to a QName, or maybe just to kebab-case.</p></dd>
<dt><code>&lt;<dfn>georss:relationshipTag</dfn>&gt;</code></dt>
<dd>The relationship between the channel or item and the feature. For example, you could have a feed of sightings of toads and owls where the relationship is <code>seen-at</code>, or a feed of drawings where each drawing was <code>inspired-by</code>. The default is <code>is-located-at</code>. The relationship is always from the channel or item to the feature, not the other way around. It has the same confusing definition as a QName as <code>featureTypeTag</code>.</dd>
<dt><code>&lt;<dfn>georss:elev</dfn>&gt;</code></dt>
<dd>The elevation, in meters, with decimal and negative values allowed. The OGC standard says nothing about this, but this tag does not make any sense with GeoRSS GML since it supports three-dimensional coordinates.</dd>
<dt><code>&lt;<dfn>georss:floor</dfn>&gt;</code></dt>
<dd>The floor of a building, as any integer, including negative values. Since there are <a href="https://en.wikipedia.org/wiki/Storey#Numbering" target="_blank">two different ways to number floors</a> depending on which part of the world you are in, you'll have to guess which is the correct one!</dd>
<dt><code>&lt;<dfn>georss:radius</dfn>&gt;</code></dt>
<dd>Geospatial people probably know this better as a <em>buffer</em>. This means the location you are actually referencing is anything that is some amount of meters around the coordinates. For a point, this will create a circle, but since we can go beyond points with GeoRSS, this can add more complicated borders. <a href="https://wiki.gis.com/wiki/index.php/Buffer_(GIS)" target="_blank">This page has some examples</a>.</dd>
</dl>
<p>Next time, we will finally do more than just point at things, and use the other geometry types that GeoRSS offers.</p>
]]></description>
<georss:point>-33.8735580 151.2344385</georss:point>
<georss:featureName>Boat Syndication Australia</georss:featureName>
<georss:featureTypeTag>shop</georss:featureTypeTag>
<georss:relationshipTag>has-nothing-to-do-with</georss:relationshipTag>
<georss:elev>5.25</georss:elev>
<georss:floor>0</georss:floor>
<georss:radius>4.5</georss:radius>
</item>
<item>
<title>Completely miss the point with GeoRSS Simple</title>
<pubDate>Sun, 08 Oct 2023 19:45:50 +0200</pubDate>
<guid isPermaLink="false">georss-simple-3</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial/GeoRSS</category>
<link>https://docs.ogc.org/cs/17-002r1/17-002r1.html#23</link>
<description><![CDATA[
<p>In <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#georss-simple-2" target="_blank">yet another post</a> of my series on geographical information in RSS, I introduced GeoRSS, and in particular GeoRSS Simple, its simpler version. I only showed a fourth way to add a point to your feeds, but some feeds might need to reference more than just a single point. GeoRSS Simple lets you go further with a few extra types of geometry:</p>
<dl>
<dt><code>&lt;<dfn>georss:line</dfn>&gt;</code></dt>
<dd>In the geospatial world, a line is not just between two points, it's a series of two or more points. In GeoRSS, it is represented by a long list of numbers, always in pairs.</dd>
<dt><code>&lt;<dfn>georss:box</dfn>&gt;</code></dt>
<dd>Two pairs of coordinates, representing the lower-left and upper-right corners of a rectangle.</dd>
<dt><code>&lt;<dfn>georss:polygon</dfn>&gt;</code></dt>
<dd>This is the geometric, and not the geospatial definition of a polygon. In <abbr title="Geographical Information Systems">GIS</abbr>, a polygon has multiple linear rings: one exterior ring, and zero or more interior rings that draw holes inside of the polygon. A linear ring is the more common definition of a polygon: a line that starts and ends at the same point. Here, we can only have the exterior ring of a polygon, so this is actually a linear ring. It is represented just like a line, as pairs of coordinates. There are at least three points per polygon, and the first and last must be equal.</dd>
</dl>
<p>Here are some examples of each of those tags:</p>
<figure>
<pre>
&lt;!-- Part of Haaldersbroekerdwarsstraat, a long street name in the Netherlands --&gt;
&lt;georss:line&gt;52.4718867,4.8277792 52.4721926,4.8275892 52.4729501,4.8270419&lt;/georss:line&gt;
&lt;!-- Some random grass not so far away from there --&gt;
&lt;georss:box&gt;52.5662344 4.7976189 52.5676983 4.8013674&lt;/georss:box&gt;
&lt;!-- A building called ESPRESSO at the Very Large Telescope,
because astronomers need coffee to go through the night --&gt;
&lt;georss:polygon&gt;
-24.6273416,-70.4045081
-24.6273922,-70.4044894
-24.6274264,-70.4046014
-24.6274789,-70.4045820
-24.6276119,-70.4045330
-24.6275341,-70.4042780
-24.6274634,-70.4043041
-24.6274763,-70.4043463
-24.6273109,-70.4044074
-24.6273416,-70.4045081
&lt;/georss:polygon&gt;
</pre>
<figcaption>A line, a rectangle and a polygon represented with GeoRSS Simple</figcaption>
</figure>
<p>You can only specify one of these geometries at once, along with all the optional elements that I described in the previous post. Those new shapes enable some new interesting use cases for feeds:</p>
<ul>
<li>Blogging about a cross-country hike, with the GPS track of each day as a <code>&lt;georss:line&gt;</code>.</li>
<li>A feed warning about upcoming solar eclipses, with a <code>&lt;georss:line&gt;</code> to show where the shadow of the eclipse will be moving on the Earth's surface. Maybe with a <code>&lt;georss:radius&gt;</code> as the radius of the shadow to do some buffering and not only show the center of that shadow.</li>
<li>A feed of weather reports, with the <code>&lt;channel&gt;</code> including the location of the weather station, or the area where the reports apply.</li>
<li>A feed of interesting architecture, with a <code>&lt;georss:polygon&gt;</code> around the circumference of each featured building.</li>
<li>A feed of triangulated radio signals heard by a whole bunch of radio equipment scattered around an area, either as a <code>&lt;georss:point&gt;</code> with a <code>&lt;georss:radius&gt;</code> to show the precision, or as a <code>&lt;georss:polygon&gt;</code> showing a triangle of the receivers that detected the signal.</li>
<li>A feed for any temporary changes to bus routes and timetables, with a <code>&lt;georss:point&gt;</code> when a stop is skipped or moved, a <code>&lt;georss:line&gt;</code> when a line gets rerouted, etc.</li>
</ul>
<p>You can probably use any of the geoportals out there, the websites that list open geographical data mostly from governments, and get plenty more ideas for GeoRSS feeds.</p>
<p>And since we are now done with GeoRSS Simple, we'll look at GeoRSS GML next time.</p>
]]></description>
<georss:line>52.4718867 4.8277792 52.4721926 4.8275892 52.4729501 4.8270419</georss:line>
<georss:featureName>Haaldersbroekerdwarsstraat</georss:featureName>
<georss:featureTypeTag>street</georss:featureTypeTag>
<georss:relationshipTag>has-nothing-to-do-with</georss:relationshipTag>
</item>
<item>
<title>Become a geospatial nerd with GeoRSS GML</title>
<pubDate>Sun, 15 Oct 2023 17:40:14 +0200</pubDate>
<guid isPermaLink="false">georss-gml</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial/GeoRSS</category>
<link>https://docs.ogc.org/cs/17-002r1/17-002r1.html#31</link>
<description><![CDATA[
<p>In this fourth post explaining GeoRSS, I'll be talking about GeoRSS GML, the second "serialization" of the format. GeoRSS Simple is meant to be easily translated into GeoRSS GML so that your typical RSS feed developer can more easily understand GeoRSS, and geospatial experts can use a format they are more acquainted with: GML.</p>
<p><dfn><abbr title="Geography Markup Language">GML</abbr></dfn> is an enormous XML schema designed to express any geospatial data under the sun. Geometries, features, coordinate reference systems, units of measurement, time, sensor measurements, data re-fetched automatically over the network, assigning coordinates to images, etc.</p>
<p>The language is not meant to be used alone, as supporting all of it is equivalent to implementing nearly every bit of geospatial software out there. Instead, GML <em>profiles</em> are defined, which are subsets of GML that are relevant to your needs, and are then used in <em>application schemas</em>, which define the specific XML format you are using that will contain some of that GML profile in it.</p>
<p>GeoRSS is an application schema using <a href="https://schemas.opengis.net/georss/1.0/schema-1.1/gmlgeorss.xsd" target="_blank">a dedicated GML profile</a> that severely restricts GML so that we don't become too insane. You are limited to four geometries, one less that the five we saw in GeoRSS Simple: points, lines, boxes, and polygons. You do have access to some extra options though, and we'll look into that soon enough.</p>
<h3>Examples</h3>
<p>Here is an example I wrote previously for a single point in GeoRSS Simple, but rewritten for GeoRSS GML:</p>
<figure>
<pre>
&lt;rss
version="2.0"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml"
&gt;
&lt;channel&gt;
&lt;item&gt;
&lt;!-- ... --&gt;
&lt;georss:where&gt;
&lt;gml:Point&gt;
&lt;gml:pos&gt;-33.8735580 151.2344385&lt;/gml:pos&gt;
&lt;/gml:Point&gt;
&lt;/georss:where&gt;
&lt;georss:featureName&gt;Boat Syndication Australia&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;shop&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;
&lt;georss:elev&gt;5.25&lt;/georss:elev&gt;
&lt;georss:floor&gt;0&lt;/georss:floor&gt;
&lt;georss:radius&gt;4.5&lt;/georss:radius&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</pre>
<figcaption>Example of a point added to an RSS channel using GeoRSS GML</figcaption>
</figure>
<p>The only two differences are that there is now a new <code>gml</code> namespace, and that the <code>georss:point</code> element has been replaced with a <code>georss:where</code> element to hold the point defined with GML. And now for the examples of other geometry types, which you would now place inside of the <code>georss:where</code>:</p>
<figure>
<pre>
&lt;!-- Part of Haaldersbroekerdwarsstraat, a long street name in the Netherlands --&gt;
&lt;gml:LineString&gt;
&lt;gml:posList&gt;52.4718867,4.8277792 52.4721926,4.8275892 52.4729501,4.8270419&lt;/gml:posList&gt;
&lt;/gml:LineString&gt;
&lt;!-- Some random grass not so far away from there --&gt;
&lt;gml:Envelope&gt;
&lt;gml:lowerCorner&gt;52.5662344 4.7976189&lt;/gml:lowerCorner&gt;
&lt;gml:upperCorner&gt;52.5676983 4.8013674&lt;/gml:upperCorner&gt;
&lt;/gml:Envelope&gt;
&lt;!-- A building called ESPRESSO at the Very Large Telescope,
because astronomers need coffee to go through the night --&gt;
&lt;gml:Polygon&gt;
&lt;gml:exterior&gt;
&lt;gml:LinearRing&gt;
&lt;gml:posList&gt;
-24.6273416 -70.4045081
-24.6273922 -70.4044894
-24.6274264 -70.4046014
-24.6274789 -70.4045820
-24.6276119 -70.4045330
-24.6275341 -70.4042780
-24.6274634 -70.4043041
-24.6274763 -70.4043463
-24.6273109 -70.4044074
-24.6273416 -70.4045081
&lt;/gml:posList&gt;
&lt;/gml:LinearRing&gt;
&lt;/gml:exterior&gt;
&lt;/gml:Polygon&gt;
</pre>
<figcaption>Examples of other geometry types with GeoRSS GML</figcaption>
</figure>
<h3>Reference</h3>
<dl>
<dt><code>&lt;<dfn>georss:where</dfn>&gt;</code></dt>
<dd>The wrapper for GML within an RSS feed. While nothing really stops you from using GML directly without GeoRSS within an RSS item, most feedreaders and other parsers will only support GML wrapped into this element. This should not be used at the same time as the GeoRSS Simple geometry elements like <code>&lt;georss:point&gt;</code>.</dd>
<dt><code>&lt;<dfn>gml:pos</dfn>&gt;</code></dt>
<dd>A single coordinate pair, as two decimal numbers. The first is the latitude between &ndash;90 and 90°, and the second the longitude between &ndash;180 and 180°, as WGS84.</dd>
<dt><code>&lt;<dfn>gml:posList</dfn>&gt;</code></dt>
<dd>A list of 2 or more decimal numbers representing a series of coordinate pairs. There should always be an even number of coordinates.</dd>
<dt><code>&lt;<dfn>gml:Point</dfn>&gt;</code></dt>
<dd>A single point, containing a <code>&lt;gml:pos&gt;</code> element to indicate its coordinates.</dd>
<dt><code>&lt;<dfn>gml:LineString</dfn>&gt;</code></dt>
<dd>A series of points linked together by straight lines. This should contain a <code>&lt;gml:posList&gt;</code> to list the coordinates of each point.</dd>
<dt><code>&lt;<dfn>gml:Envelope</dfn>&gt;</code></dt>
<dd>A rectangle. This must contain a <code>&lt;gml:lowerCorner&gt;</code> and a <code>&lt;gml:upperCorner&gt;</code> to specify its two corners.</dd>
<dt><code>&lt;<dfn>gml:lowerCorner</dfn>&gt;</code></dt>
<dd>The lower-left, or southwest, corner of a <code>&lt;gml:Envelope&gt;</code>. Its value is the same as a <code>&lt;gml:pos&gt;</code>.</dd>
<dt><code>&lt;<dfn>gml:upperCorner</dfn>&gt;</code></dt>
<dd>The upper-right, or northeast, corner of a <code>&lt;gml:Envelope&gt;</code>. Its value is the same as a <code>&lt;gml:pos&gt;</code>.</dd>
<dt><code>&lt;<dfn>gml:Polygon</dfn>&gt;</code></dt>
<dd>In the <abbr title="Geographical Information Systems">GIS</abbr> world, a polygon is composed of multiple rings; at least one exterior ring, and zero or more interior rings that create holes within the exterior ring. This element therefore must have a <code>&lt;gml:exterior&gt;</code> ring. GeoRSS GML forbids any interior rings, since the GeoRSS Simple <code>&lt;georss:polygon&gt;</code> does not support interior rings, so the exterior ring is always alone.</dd>
<dt><code>&lt;<dfn>gml:exterior</dfn>&gt;</code></dt>
<dd>The exterior ring of a polygon. This should contain a <code>&lt;gml:LinearRing&gt;</code>.</dd>
<dt><code>&lt;<dfn>gml:LinearRing</dfn>&gt;</code></dt>
<dd>A <code>&lt;gml:LineString&gt;</code>, but there has to be at least four points, and the first and last coordinates must be equal, so that the line string forms a ring.</dd>
</dl>
]]></description>
<georss:where>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:posList>
-24.6273416 -70.4045081
-24.6273922 -70.4044894
-24.6274264 -70.4046014
-24.6274789 -70.4045820
-24.6276119 -70.4045330
-24.6275341 -70.4042780
-24.6274634 -70.4043041
-24.6274763 -70.4043463
-24.6273109 -70.4044074
-24.6273416 -70.4045081
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</georss:where>
<georss:featureName>ESPRESSO</georss:featureName>
<georss:featureTypeTag>building</georss:featureTypeTag>
<georss:relationshipTag>author-likes-the-name</georss:relationshipTag>
<georss:elev>2635</georss:elev>
</item>
<item>
<title>Going around in circles in GeoRSS</title>
<pubDate>Sun, 22 Oct 2023 19:19:32 +0200</pubDate>
<guid isPermaLink="false">georss-circle</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial/GeoRSS</category>
<description><![CDATA[
<p>In <a href="https://envs.net/~lucidiot/rsrsss/#georss-gml" target="_blank">yet another incredibly niche blog post</a>, I described GeoRSS GML. While working on this, I got quite confused by circles, enough to decide to just remove any mention of circles in all of the previous GeoRSS posts.</p>
<p>The <a href="https://docs.ogc.org/cs/17-002r1/17-002r1.html" target="_blank">OGC standard</a>, which is the only currently active standard, and the original archived pages for <a href="https://web.archive.org/web/20200629173428/http://www.georss.org/simple.html" target="_blank">GeoRSS Simple</a> and <a href="https://web.archive.org/web/20200629173624/http://www.georss.org/gml.html" target="_blank">GeoRSS GML</a> do not define any specific element to describe a circle. If you want to represent a circle, you can do so using the <code>&lt;georss:radius&gt;</code> element, which will create a <a href="https://wiki.gis.com/wiki/index.php/Buffer_(GIS)" target="_blank">buffer</a> around a point.</p>
<figure>
<pre>
&lt;!-- GeoRSS Simple --&gt;
&lt;georss:point&gt;-24.62759969859908 -70.40503541618583&lt;/georss:point&gt;
&lt;georss:radius&gt;14.74038882&lt;/gml:radius&gt;
&lt;georss:featureName&gt;Antu, VLT-UT1&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;telescope&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;
&lt;georss:elev&gt;2635&lt;/georss:elev&gt;
&lt;!-- GeoRSS GML --&gt;
&lt;georss:where&gt;
&lt;gml:Point&gt;
&lt;gml:pos&gt;-24.62759969859908 -70.40503541618583&lt;/gml:pos&gt;
&lt;/gml:Point&gt;
&lt;/georss:where&gt;
&lt;georss:radius&gt;14.74038882&lt;/gml:radius&gt;
&lt;georss:featureName&gt;Antu, VLT-UT1&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;telescope&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;
&lt;georss:elev&gt;2635&lt;/georss:elev&gt;
</pre>
<figcaption>Examples of a circle represented as a center point and a radius in GeoRSS</figcaption>
</figure>
<p>However, <a href="https://schemas.opengis.net/georss/1.0/schema-1.1/gmlgeorss.xsd" target="_blank">the <abbr title="XML Schema Definition">XSD</abbr> defining the GeoRSS GML Profile</a>, and <a href="https://schemas.opengis.net/georss/1.0/schema-1.1/georss.xsd" target="_blank">the one for GeoRSS Simple</a>, both include ways to specify a circle separately. The OGC standard <a href="https://docs.ogc.org/cs/17-002r1/17-002r1.html#7" target="_blank">has links to the schemas</a> and does not state that those schemas are not non-normative, as many other specifications do. That means that in theory, it is completely legal to use them.</p>
<h3>Reference</h3>
<dl>
<dt><code>&lt;<dfn>georss:circle</dfn>&gt;</code></dt>
<dd>A GeoRSS Simple circle. Circles are defined by their center and their radius, so three numbers should be used here: latitude, longitude as WGS84 coordinates, and the radius in meters.</dd>
<dt><code>&lt;<dfn>gml:CircleByCenterPoint</dfn>&gt;</code></dt>
<dd>A GeoRSS GML circle. Must be used within a <code>&lt;georss:where&gt;</code> element. This should have a <code>&lt;gml:pos&gt;</code> element to specify the coordinates of the center point of the circle, and a <code>&lt;gml:radius&gt;</code> element to specify the radius.</dd>
<dt><code>&lt;<dfn>gml:radius</dfn>&gt;</code></dt>
<dd>The radius of a circle. This can have an <code>uom</code> attribute to specify the unit of measurement, which is by default <code>m</code> to represent meters.</dd>
<dt><code><dfn>uom</dfn></code></dt>
<dd>A unit of measurement. The <a href="https://portal.ogc.org/files/?artifact_id=20509" target="_blank">OGC GML 3.2.1 specification</a> defines its value under section 8.2.3.6. It can be either a string, without any colons, spaces, tabs, carriage returns or line breaks, or a URL. When using strings, following the <a href="https://ucum.org/" target="_blank">Unified Code for Units of Measure</a> is recommended. For example, you could use <code>m</code> for meters, <code>cm</code> for centimeters, <code>[ft_i]</code> for feet (international definition) or <code>[ft_us]</code> for U.S. feets. It is highly likely that most systems will only support meters.</dd>
</dl>
<h3>Examples</h3>
<figure>
<pre>
&lt;!-- GeoRSS Simple --&gt;
&lt;georss:circle&gt;-24.62759969859908 -70.40503541618583 14.74038882&lt;/georss:circle&gt;
&lt;georss:featureName&gt;Antu, VLT-UT1&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;telescope&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;
&lt;georss:elev&gt;2635&lt;/georss:elev&gt;
&lt;!-- GeoRSS GML --&gt;
&lt;georss:where&gt;
&lt;gml:CircleByCenterPoint&gt;
&lt;gml:pos&gt;-24.62759969859908 -70.40503541618583&lt;/gml:pos&gt;
&lt;gml:radius uom="m"&gt;14.74038882&lt;/gml:radius&gt;
&lt;/gml:CircleByCenterPoint&gt;
&lt;/georss:where&gt;
&lt;georss:featureName&gt;Antu, VLT-UT1&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;telescope&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;
&lt;georss:elev&gt;2635&lt;/georss:elev&gt;
</pre>
<figcaption>Examples of a circle represented with the secret circle geometries in GeoRSS</figcaption>
</figure>
<h3>Notes</h3>
<p>The <a href="https://doc.arcgis.com/en/arcgis-online/reference/georss.htm" target="_blank">GeoRSS documentation on ArcGIS Online</a> mentions supports for circles on GeoRSS Simple, but excludes them from GeoRSS GML. I would therefore advise against trying to use a <code>CircleByCenterPoint</code>. It is likely that the few GeoRSS implementations out there will only support <code>&lt;georss:circle&gt;</code>, if they support circles at all.</p>
<p>The <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a> does not support circles in either its <a href="https://github.com/w3c/feedvalidator/blob/ff89646c3f6869058dfcf5a3cf9b6ead49bbe42d/src/feedvalidator/extension.py#L211-L239" target="_blank">GeoRSS Simple validator</a> or its <a href="https://github.com/w3c/feedvalidator/blob/ff89646c3f6869058dfcf5a3cf9b6ead49bbe42d/src/feedvalidator/extension.py#L732-L740" target="_blank">GeoRSS GML validator</a>.
<p>Circles were probably either added before <code>&lt;georss:radius&gt;</code> was introduced, or added, then partially removed when someone noticed <code>&lt;georss:radius&gt;</code> could already do the job. Another possibility is that circles and curves are far less supported by GIS software than linear geometries, so they wouldn't be that usable anyway. This raises interesting questions: what happens if you use a circle, but also add a radius around it? Do you get a larger circle? Is the radius ignored? Does it become an approximation of a circle as a polygon, as is common with GIS software that doesn't support circles? Those questions will definitely remain unanswered, as with most things about RSS, the answer of most organizations nowadays will be "who cares?". This is why we can't have nice things.</p>
]]></description>
<georss:circle>-24.62759969859908 -70.40503541618583 14.74038882</georss:circle>
<georss:featureName>Antu, VLT-UT1</georss:featureName>
<georss:featureTypeTag>telescope</georss:featureTypeTag>
<georss:relationshipTag>has-nothing-to-do-with</georss:relationshipTag>
<georss:elev>2635</georss:elev>
</item>
<item>
<title>Really Spatial Syndication</title>
<pubDate>Sun, 29 Oct 2023 10:50:02 +0100</pubDate>
<guid isPermaLink="false">georss-srs</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Geospatial/GeoRSS</category>
<description><![CDATA[
<p>I have covered nearly everything about GeoRSS, but not exactly everything. I promise, someday Ill be posting about something else, but for today, well have to delve deep into the mess that is geolocation.</p>
<h3>Coordinate systems</h3>
<p>If I ask you to give me something that will precisely point at some place, any place in the world, including the middle of the ocean, youre likely to give me so-called <em>GPS coordinates</em>. Those actually are <a href="https://en.wikipedia.org/wiki/World_Geodetic_System#WGS_84" target="_blank">WGS 84</a> coordinates. They represent a location on Earth, assuming the Earth is a perfect ellipsoid (a sphere, but slightly squished at the poles), whose center is the planets center of mass. But there are a lot of other ways to produce coordinates. Even now that GPS coordinates are ubiquitous, many other systems are still in use, for historic reasons, due to technological constraints, or for an increased precision.</p>
<p>Lets start with a simple one. How do you represent coordinates in three dimensions? We did see earlier that GeoRSS has <code>&lt;georss:elev&gt;</code> to set the elevation in meters, but what if you are trying to represent a line that is sloped? For example, you are making your own Strava and want to show that you went up and down a hill. Your track wont be perfectly at sea level, it will have an altitude that changes with each point. You need some way to include the altitude along with the latitude and longitude. In a geospatial database, the typical GPS coordinate system in use is numbered <a href="https://epsg.io/4326" target="_blank">EPSG:4326</a>; store this number next to your coordinates and the database knows you are speaking in WGS 84. But if you want to add a third coordinate for altitudes, you will have to use a different version of the system numbered <a href="https://epsg.io/4979" target="_blank">EPSG:4979</a>. Its the same as GPS, but theres a third axis for a height, starting from the ellipsoid defined by WGS 84, and measured in meters.</p>
<h3>Going beyond Earth</h3>
<p>Lets go further. With all the hype around a bunch of space agencies trying to build a moon space station and two moon bases and sending rovers and all, we have to start thinking about an equivalent of GPS for other planets, and a way to refer to places on any planet. Fortunately, space agencies have had this problem a long time ago, and they have their solutions.</p>
<p>If you define your own geographic coordinate system, you can make your own ellipsoid to describe the shape of the planet, set the origin point (the 0° north 0° east point), and define how altitudes are expressed if you want to have a third dimension. On top of that, you can define a projection to flatten your planet, but thats a whole another can of worms and I wont deal with that here. You could define a coordinate system for the moon, with an ellipsoid that has the size and shape of the Moon, centered on the Moons center of mass, and define wherever you want your origin point to be. And you can do the same thing for basically anything, assuming you can somehow trick geospatial databases into bending a spheroid hard enough to fit your needs.</p>
<p>And thats what the <abbr title="International Astronomical Union">IAU</abbr> did. Those are the same people who said Pluto isnt a planet, so I dont know if you can really trust them, but I havent seen any other coordinate system for other planets that was in widespread use within the space industry. There are lots of <a href="https://spatialreference.org/ref/iau2000/" target="_blank">coordinate systems and projections for planets and moons</a>, including some for Earth because we clearly needed more. For the Moon, youll have to use <a href="https://spatialreference.org/ref/iau2000/30100/" target="_blank">IAU2000:30100</a>, aka <em>Moon 2000</em>. This doesnt mean the Moon is <abbr title="Year 2000">Y2K</abbr>-ready, it just means this was adopted by the IAU in 2000. Moon 2000 is defined in a geospatial database like so:</p>
<figure>
<pre>GEOGCS["Moon 2000",
DATUM["D_Moon_2000",
SPHEROID["Moon_2000_IAU_IAG", 1737400.0, 0.0]],
PRIMEM["Greenwich", 0],
UNIT["Decimal_Degree", 0.0174532925199433]]</pre>
<figcaption>
<a href="https://en.wikipedia.org/wiki/Well-known_text_representation_of_coordinate_reference_systems" target="_blank">Well-Known Text</a> representation of the Moon 2000 coordinate system
</figcaption>
</figure>
<p>The <code>PRIMEM</code> specifies the primary meridian, at 0°; it is called <em>Greenwich</em> even though it definitely doesnt exist on the Moon, because nobody cares about its name. We also dont specify anywhere what the actual location of the origin point is, because databases dont care about that either. The <code>UNIT</code> specifies that we are using decimal degrees for coordinates, with the long number being the multiplier to convert degrees to radians. Those are almost always present in most coordinate systems.</p>
<p>What matters for the Moon is the <code>SPHEROID</code>, with its two parameters, the semi-major axis and the inverse flattening. A spheroid is just another name for an ellipsoid.</p>
<p>In a sphere, the semi-major axis is the radius. In an ellipsoid, that would be the largest radius, as opposed to the semi-minor axis. The inverse flattening defines how hard you should <em>squish</em> the sphere to get an ellipsoid, so it allows calculating the semi-minor axis. Here, we have <code>1737400</code> as the semi-major axis, which matches the radius of the Moon in meters, and <code>0</code> as the inverse flattening, meaning this is a perfect sphere.</p>
<p>Remember how I mentioned in a previous post that <abbr title="Geography Markup Language">GML</abbr> is designed to represent anything about geospatial data? You can check out the <a href="https://spatialreference.org/ref/iau2000/30100/gml/" target="_blank">GML representation of Moon 2000</a> if you wish to be spooked.</p>
<h3>From the Moon to WGS 84</h3>
<p>So lets say we have some Moon 2000 coordinates, for example <a href="https://en.wikipedia.org/wiki/Tranquility_Base" target="_blank">Tranquility Base</a>, at <a href="https://geohack.toolforge.org/geohack.php?pagename=Tranquility_Base&amp;params=00_41_15_N_23_26_00_E_globe:moon_type:landmark" target="_blank">0.6875°, 23.433333°</a>. How do you put that into GeoRSS?</p>
<p>Since databases dont care one bit whether what you are doing makes any sense, you could convert directly from Moon 2000 to WGS 84. That would make the database assume that your coordinates are just on a very weirdly-shaped Earth. Since coordinates are in degrees, the size of the Earth doesnt matter, and the coordinates will remain unchanged after this conversion; maybe with some slight changes to account for the differently-shaped ellipsoid. You are now in <a href="https://geohack.toolforge.org/geohack.php?pagename=Tranquility_Base&amp;params=00_41_15_N_23_26_00_E_globe:earth_type:landmark" target="_blank">some weird place in Democratic Republic of the Congo</a>.</p>
<p>To do the proper conversion, you will need to do some trigonometry. Your Moon 2000 coordinates and the Moon 2000 spheroid are related to the center of mass of the Moon. WGS 84 is the same for Earth. Knowing the distance between the Earth and the Moons centers of masses, and knowing <a href="https://astronomy.stackexchange.com/a/30434" target="_blank">the position of the Moon on the Earths surface</a> at a given date and time, it should be possible to get the offset in degrees to add to the latitude and longitude to said position to get the position of your target on Earth, as well as the altitude from Earth.</p>
<figure>
<img src="https://envs.net/~lucidiot/rsrsss/img/earth-moon-projection.svg" />
<figcaption>Schematic representation of the geometric shenanigans to get WGS 84 coordinates for Tranquility Base</figcaption>
</figure>
<p>Thats a mess, and you can do something easier than that: just make it someone elses problem. GeoRSS GML lets you set a different coordinate system using the <code>srsName</code> attribute. And if you are using any amount of dimensions other than two, you can use <code>srsDimension</code> as well.</p>
<h3>Examples</h3>
<p>Here is an example of one of the telescopes of the <abbr title="Very Large Telescope">VLT</abbr>, the same that I mentioned in my post about circles in GeoRSS, but using a third dimension in its coordinates instead of the <code>&lt;georss:elev&gt;</code> tag:</p>
<figure>
<pre>&lt;georss:where&gt;
&lt;gml:Point srsName="urn:ogc:def:crs:EPSG:9.0:4979" srsDimension="3"&gt;
&lt;gml:pos&gt;-24.62759969859908 -70.40503541618583 2635&lt;/gml:pos&gt;
&lt;/gml:Point&gt;
&lt;/georss:where&gt;
&lt;georss:featureName&gt;Antu, VLT-UT1&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;telescope&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;has-nothing-to-do-with&lt;/georss:relationshipTag&gt;</pre>
<figcaption>Getting a third dimension in GeoRSS GML</figcaption>
</figure>
<p>To specify that I am using <a href="https://epsg.io/4979" target="_blank">EPSG:4979</a>, I am using the <code>srsName</code> attribute with a <abbr title="Uniform Resource Name">URN</abbr>, specifically an <a href="https://www.ogc.org/about-ogc/policies/ogc-urn-policy/" target="_blank"><abbr title="Open Geospatial Consortium">OGC</abbr> URN</a>, which defined that <code>def:crs:</code> defines a coordinate reference system. <code>EPSG</code> says the authority defining this system is the <abbr title="European Petroleum Survey Group">EPSG</abbr>, <code>9.0</code> is the version number of their <a href="https://en.wikipedia.org/wiki/EPSG_Geodetic_Parameter_Dataset" target="_blank">Geodetic Parameter database</a>, and <code>4979</code> is the identifier of the system within that database.</p>
<p>I am also using <code>srsDimension</code>, which allows specifying how many dimensions the coordinate system has. While this could be guessed from the coordinate system, this allows feed parsers and validators to know that they should expect coordinates of this amount of dimensions without having to know about coordinate systems, which can simplify implementations. Perhaps you can just send the <code>srsName</code> verbatim to some other software library specialized in coordinate systems.</p>
<p>And here is Tranquility Base! Since the <code>IAU2000</code> coordinate systems and projections do not have a <abbr title="Uniform Resource Name">URN</abbr>, I am instead using a <abbr title="Uniform Resource Locator">URL</abbr> to the GML definition of the coordinate system I want.</p>
<figure>
<pre>&lt;georss:where&gt;
&lt;gml:Point srsName="https://spatialreference.org/ref/iau2000/30100/gml/"&gt;
&lt;gml:pos&gt;0.6875 23.433333&lt;/gml:pos&gt;
&lt;/gml:Point&gt;
&lt;/georss:where&gt;
&lt;georss:featureName&gt;Tranquility Base&lt;/georss:featureName&gt;
&lt;georss:featureTypeTag&gt;landing-site&lt;/georss:featureTypeTag&gt;
&lt;georss:relationshipTag&gt;used-as-example&lt;/georss:relationshipTag&gt;</pre>
<figcaption>Pointing at Tranquility Base in GeoRSS GML</figcaption>
</figure>
<h3>Reference</h3>
<dl>
<dt><code><dfn>srsName</dfn></code></dt>
<dd>
<p>The spatial reference system used for this geometry. This should be either a <abbr title="Uniform Resource Name">URN</abbr> for a common system, for example <code>urn:ogc:def:crs:EPSG:&lt;version&gt;:&lt;identifier&gt;</code>, where <code>&lt;version&gt;</code> is the version number of the <abbr title="European Petroleum Survey Group">EPSG</abbr> database of spatial reference systems, and <code>&lt;identifier&gt;</code> is the number of the system. For <code>EPSG:4979</code>, you could use <code>urn:ogc:def:crs:EPSG:9.0:4979</code>. For an <abbr title="Spatial Reference System">SRS</abbr> that does not have a URN, or has a custom definition, you can use a <abbr title="Uniform Resource Locator">URL</abbr> that points to the definition of this SRS in GML. For <code>IAU2000:30100</code>, you could use <code>https://spatialreference.org/ref/iau2000/30100/gml/</code>.</p>
<p>The <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a> allows this attribute, but does not perform any validation on its value.</p>
</dd>
<dt><code><dfn>srsDimension</dfn></code></dt>
<dd>
<p>The number of dimensions of this spatial reference system. Since the default is the 2-dimensional WGS 84 (EPSG:4326), you will always need to set <code>srsName</code> along with this. This is always implied by the system you are using, but this makes it easier to validate your data since a GeoRSS validator does not have to know how the <abbr title="Spatial Reference System">SRS</abbr> defined, or understand the concept of SRS, to be able to tell if you put the right amount of coordinates in your data.</p>
<p>You can set both of these attributes on <code>&lt;gml:Point&gt;</code>, <code>&lt;gml:LineString&gt;</code>, <code>&lt;gml:LinearRing&gt;</code>, <code>&lt;gml:Envelope&gt;</code>, <code>&lt;gml:Polygon&gt;</code> or <code>&lt;gml:CircleByCenterPoint&gt;</code>. You can also set these directly on <code>&lt;gml:pos&gt;</code> and <code>&lt;gml:posList&gt;</code>, but the <a href="https://schemas.opengis.net/georss/1.0/schema-1.1/gmlgeorss.xsd" target="_blank"><abbr title="XML Schema Definition">XSD</abbr> for the GeoRSS GML Application Profile</a> says that <cite>"It is expected that this attribute will be specified at the direct position level only in rare cases"</cite>.</p>
<p>While the <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a> supports this attribute, it only validates that it is a valid positive integer, not that it matches the specified <abbr title="Spatial Reference System">SRS</abbr>, or that the coordinates specified in the geometries match this attribute. It also does not allow this attribute on <code>&lt;gml:pos&gt;</code> or <code>&lt;gml:posList&gt;</code>.</p>
</dd>
</dl>
]]></description>
<georss:where>
<gml:Point srsName="https://spatialreference.org/ref/iau2000/30100/gml/">
<gml:pos>0.6875 23.433333</gml:pos>
</gml:Point>
</georss:where>
<georss:featureName>Tranquility Base</georss:featureName>
<georss:featureTypeTag>landing-site</georss:featureTypeTag>
<georss:relationshipTag>used-as-example</georss:relationshipTag>
</item>
<item>
<title>National Hurricane Center and Central Pacific Hurricane Center</title>
<pubDate>Sun, 05 Nov 2023 13:24:50 +0100</pubDate>
<guid isPermaLink="false">nhc-cphc</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Weather</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/noaa/nhc.opml</link>
<description><![CDATA[
<p>The <abbr title="National Oceanic and Atmospheric Administration">NOAA</abbr>'s National Hurricane Center and Central Pacific Hurricane Center are two distinct official bodies responsible for watching out for cyclones around North America. There used to also be an Eastern Pacific Hurricane Center, with the <abbr title="National Hurricane Center">NHC</abbr> being solely responsible for the Atlantic side of things, but those two got merged. The <abbr title="Central Pacific Hurricane Center">CPHC</abbr>'s website got merged with the NHC's, but they remain distinct entities, perhaps for redundancy if one of them loses to a cyclone.</p>
<p>The NHC provides a myriad of feeds, with an RSS button available on the header of every webpage, but <a href="https://www.nhc.noaa.gov/aboutrss.shtml" target="_blank">the list of feeds</a> it links to is quite hard to read. Feed autodiscovery is supported, with 11 of their feeds listed as <code>&lt;link /&gt;</code> tags. Among this hodgepodge of feeds, you'll find:</p>
<ul>
<li>2-day forecasts for every depression, storm or cyclone under their watch, as images or as text;</li>
<li>Updates to their KMZ or SHP exports, either individually for each cyclone or for an overview over one of their three regions, for geospatial people, with <a href="https://www.nhc.noaa.gov/gis/rss.php" target="_blank">further docs on how to use them</a>;</li>
<li>Descriptions of each depression, storm or cyclone as separate items;</li>
<li>The latest weather report as a podcast (this seems to be inactive);</li>
<li>Flight plans for any weather reconnaissance flights they might have each day;</li>
<li><dfn>Discussions</dfn>, longer weather reports written less to follow a standard maritime/aviation weather report and more to be human-readable;</li>
<li>Monthly overviews of tropical weather;</li>
<li>Forecasts dedicated to navigation in offshore waters, in high seas, HF radio transmission quality, probable wind speeds for storms, etc.;</li>
<li>Advisories of incoming hurricanes, or forecasts, or status updates, or <abbr title="International Civil Aviation Organization">ICAO</abbr>-compliant ones.</li>
</ul>
<p>That's a lot. Most of these feeds are divided by region (Atlantic, Central Pacific or East Pacific, per <abbr title="World Meteorological Organization">WMO</abbr> conventions), and by "storm wallet". A storm wallet is a large binder or collection of binders that forecasters used to archive all of their data into once each cyclone dissipates, numbered 1 to 5, to match the maximum advisory level reached. In the case of those feeds, this means each storm wallet is actually the current advisory level for the storm. Some feeds also have versions in Spanish, updated by their Puerto Rico office when they feel like it.</p>
<p>To make it slightly easier for feed aficionados (<em>afeedcionados</em>?) to figure out what they might be interested in, I wrote <a href="https://tildegit.org/lucidiot/rsrsss/src/commit/773c10f95655ae0650d6b72da5eb7c5d9a02bab9/bin/build_nhc_opml" target="_blank">a terrible script</a> to build an <abbr title="Outline Processor Markup Language">OPML</abbr> file listing every available feed. You can access it and add it to your feed reader <a href="https://envs.net/~lucidiot/rsrsss/opml/noaa/nhc.opml" target="_blank">here</a>; feel free to remove the likely numerous duplicates from your reader afterwards.</p>
<p>Note that some of these feeds include a <code>&lt;gml:Point&gt;</code> element in the items describing weather systems, but it isn't wrapped within a <code>&lt;georss:where&gt;</code> element, making those feeds <a href="https://validator.w3.org/feed/check.cgi?url=https://www.nhc.noaa.gov/rss_examples/gis-ep-20130530.xml" target="_blank">invalid</a>. This strangeness is what made me have a deeper look into GeoRSS in the first place, leading to the series of articles I posted in the last few weeks.</p>
]]></description>
</item>
<item>
<title>Spice up your feeds with cyclones</title>
<pubDate>Sun, 12 Nov 2023 19:29:48 +0100</pubDate>
<guid isPermaLink="false">nhc-xsd</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">XSD</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Weather</category>
<link>https://envs.net/~lucidiot/rsrsss/xsd/nhc.xsd</link>
<description><![CDATA[
<p>Last time, I posted about the incredible amount of RSS feeds the <abbr title="National Hurricane Center">NHC</abbr> vomits. While trying to delve into those feeds, particularly the ones dubbed as <abbr title="Geographic Information Systems">GIS</abbr> feeds that use <abbr title="Geography Markup Language">GML</abbr>, I found an XML namespace meant to describe cyclones. Way to make your feeds way more epic!</p>
<p>With the help of <a href="https://www.nhc.noaa.gov/rss_examples/" target="_blank">the NHC's example files</a>, published solely to help developers work with their feeds, and <a href="https://www.nhc.noaa.gov/gis/rss.php" target="_blank">GIS RSS feeds documentation page</a>, I cobbled together an <abbr title="XML Schema Definition">XSD</abbr> to better document this namespace.</p>
<figure>
<pre>
&lt;rss
version="2.0"
xmlns:nhc="https://www.nhc.noaa.gov/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
https://www.nhc.noaa.gov
https://envs.net/~lucidiot/rsrsss/xsd/nhc.xsd
"
&gt;
&lt;channel&gt;
&lt;!-- ... --&gt;
&lt;item&gt;
&lt;!-- ... --&gt;
&lt;nhc:Cyclone&gt;
&lt;nhc:center&gt;38.43317, -82.02346&lt;/nhc:center&gt;
&lt;nhc:type&gt;TROPICAL STORM&lt;/nhc:type&gt;
&lt;nhc:name&gt;FLORIDA MAN&lt;/nhc:name&gt;
&lt;nhc:wallet&gt;EP3&lt;/nhc:wallet&gt;
&lt;nhc:atcf&gt;EP872023&lt;/nhc:atcf&gt;
&lt;nhc:datetime&gt;11:11 AM PDT Wed Jan 25&lt;/nhc:datetime&gt;
&lt;nhc:movement&gt;NE at 54 mph&lt;/nhc:movement&gt;
&lt;nhc:pressure&gt;984 mb&lt;/nhc:pressure&gt;
&lt;nhc:wind&gt;115 mph&lt;/nhc:wind&gt;
&lt;nhc:headline&gt;...FLORIDA MAN MESSES UP THE TOWN OF HURRICANE, WV...&lt;/nhc:headline&gt;
&lt;/nhc:Cyclone&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</pre>
<figcaption>Example of a tropical storm added to an RSS item using the NHC XML namespace</figcaption>
</figure>
<p>Note that in this example, I am using the <a href="https://www.w3.org/TR/xmlschema-1/#xsi_schemaLocation" target="_blank"><code>xsi:schemaLocation</code></a> attribute to tell any XML schema validators where the <abbr title="XML Schema Definition">XSD</abbr> for the <code>nhc</code> namespace is located. This can help you if you are using an XML editor to write your RSS feeds, or want some automatic validation of the validity of your feeds with namespaces and features that go beyond the <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a>. Let's have a look at all those new XML elements:</p>
<dl>
<dt><code>&lt;<dfn>nhc:Cyclone</dfn>&gt;</code></dt>
<dd>A tropical weather system: a tropical depression, tropical storm, hurricane, etc. This can only be used on items, not channels, and can only be used once per item.</dd>
<dt><code>&lt;<dfn>nhc:center</dfn>&gt;</code></dt>
<dd>WGS84 coordinates of the center of the weather system, as latitude then longitude separated with a comma and optionally spaces.</dd>
<dt><code>&lt;<dfn>nhc:type</dfn>&gt;</code></dt>
<dd>Type of the weather system: whether it is a tropical depression, tropical storm, hurricane, etc. Usually written entirely in uppercase.</dd>
<dt><code>&lt;<dfn>nhc:name</dfn>&gt;</code></dt>
<dd>Name of the weather system. Usually written entirely in uppercase.</dd>
<dt><code>&lt;<dfn>nhc:wallet</dfn>&gt;</code></dt>
<dd>
<p>The <dfn>storm wallet</dfn>: Back before hurricane forecasting became computerized, all of the hurricane data was stored in binders, called wallets. There are five wallets for each of the three areas of responsibility of the <abbr title="National Hurricane Center">NHC</abbr> and the <abbr title="Central Pacific Hurricane Center">CPHC</abbr>.</p>
<p>Storm wallets are numbered with two letters representing the area of responsibility, followed by a digit from 1 to 5 matching the storm advisory number. The two-letter codes for areas of responsibility are:</p>
<dl>
<dt>AT</dt>
<dd>Atlantic</dd>
<dt>CP</dt>
<dd>Central Pacific</dd>
<dt>EP</dt>
<dd>Eastern Pacific</dd>
</dl>
</dd>
<dt><code>&lt;<dfn>nhc:atcf</dfn>&gt;</code></dt>
<dd>
<p>Storm identifier in the <abbr title="Automated Tropical Cyclone Forecast">ATCF</abbr> software. This is the software used for hurricane forecasting ever since it became computerized. It can be used to find the raw data from that software on <a href="https://ftp.nhc.noaa.gov/atcf/" target="_blank">the NHC's public file server</a>.</p>
<p>ATCF IDs begin with a two-letter code for the area of responsibility, followed by a two-digit storm number and the four-digit year in which the storm occurs. The two-letter codes for areas of responsibility are:</p>
<dl>
<dt>AL</dt>
<dd>Atlantic. Note that this is different from the <code>AT</code> code for storm wallets.</dd>
<dt>CP</dt>
<dd>Central Pacific</dd>
<dt>EP</dt>
<dd>Eastern Pacific</dd>
</dl>
<p>Storm numbers 01 to 30 are supposed to be unique storm numbers per season. Storm numbers 80 to 89 are used for training purposes and should be ignored when trying to process real ATCF data. Storm numbers 90 to 99 are areas of interest to forecasters that may not actually be storms and may be reused in the same season.</p>
<p>I recommend using storm numbers between 80 and 89 if you want to mess around and create fake storms, since those are explicitly designated as training or testing data that should be discarded. Also note that storm numbers 31 to 79 are not assigned, and that they assume there will never be more than 30 storms in one year. I'm sure climate change will fix that.</p>
</dd>
<dt><code>&lt;<dfn>nhc:datetime</dfn>&gt;</code></dt>
<dd>The date and time of the report, using the <a href="https://man7.org/linux/man-pages/man3/strftime.3.html" target="_blank">strftime format</a> <code>%I:%M %p %Z %a %b %d</code>. The commonly used timezones are <a href="https://en.wikipedia.org/wiki/Central_Time_Zone" target="_blank">CDT</a> on the Atlantic reports, <a href="https://en.wikipedia.org/wiki/Pacific_Time_Zone" target="_blank">PDT</a> on Eastern Pacific reports, and <a href="https://en.wikipedia.org/wiki/Hawaii%E2%80%93Aleutian_Time_Zone" target="_blank">HDT</a> on Central Pacific reports.</dd>
<dt><code>&lt;<dfn>nhc:movement</dfn>&gt;</code></dt>
<dd>
<p>The direction and speed of movement of the storm, expressed as a cardinal direction and a speed, usually in the form <code>[direction] at [speed] mph</code>. The direction can be a cardinal (<abbr title="North">N</abbr>, <abbr title="South">S</abbr>, <abbr title="East">E</abbr>, <abbr title="West">W</abbr>), intercardinal (<abbr title="Northeast">NE</abbr>, <abbr title="Southeast">SE</abbr>, <abbr title="Southwest">SW</abbr>, etc.) or secondary intercardinal direction (<abbr title="West-northwest">WNW</abbr>, <abbr title="East-southeast">ESE</abbr>, etc.). Speeds are non-negative integers, and always in miles per hour.</p>
<p>Note that this is a manually written value, not necessarily intended for machine consumption, and that nothing prevents other values from being set. Other known values include <code>Stationary</code> and <code>Nearly stationary</code>.</p>
</dd>
<dt><code>&lt;<dfn>nhc:pressure</dfn>&gt;</code></dt>
<dd>The atmospheric pressure at the center of the storm, expressed in millibars without decimals, as <code>[pressure] mb</code>.</dd>
<dt><code>&lt;<dfn>nhc:wind</dfn>&gt;</code></dt>
<dd>The wind speed in the storm, expressed in miles per hour without decimals, as <code>[speed] mph</code>.</dd>
<dt><code>&lt;<dfn>nhc:headline</dfn>&gt;</code></dt>
<dd>A headline for the report, usually written in uppercase, with each sentence surrounded by ellipsis characters ("…", <code>&amp;hellip;</code>, U+2026).</dd>
</dl>
<p>All of the child elements of <code>&lt;nhc:Cyclone&gt;</code> are required.</p>
<p>And as with most of the XML namespaces that I showcase on this feed, I added support for it on the <abbr title="Extensible Stylesheet Language Transformations">XSLT</abbr> that allows this feed to be displayed on most modern web browsers without RSS support. <a href="https://envs.net/~lucidiot/rsrsss/#nhc-xsd" target="_blank">View this post in your browser</a> and admire the additional hurricane information available!</p>
]]></description>
<nhc:Cyclone>
<nhc:center>40.1509066, -77.0312744</nhc:center>
<nhc:type>HURRICANE</nhc:type>
<nhc:name>REALLY STORMY SYNDICATION</nhc:name>
<nhc:wallet>AT1</nhc:wallet>
<nhc:atcf>AL812023</nhc:atcf>
<nhc:datetime>06:29 PM GMT Sun Nov 12</nhc:datetime>
<nhc:movement>WSW at 88 mph</nhc:movement>
<nhc:pressure>0 mb</nhc:pressure>
<nhc:wind>9000 mph</nhc:wind>
<nhc:headline>...CATASTROPHIC DAMAGE TO SOCIAL MEDIA AS REALLY STORMY SYNDICATION SWEEPS THROUGH THE COUNTRY...</nhc:headline>
</nhc:Cyclone>
</item>
<item>
<title>p1k3</title>
<pubDate>Sun, 19 Nov 2023 17:56:05 +0100</pubDate>
<guid isPermaLink="false">p1k3</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://p1k3.com/feed</link>
<description><![CDATA[
<p>~brennen is a fellow <a href="https://tilde.town" target="_blank">townie</a> who plays the long game. His blog exists since 1997, and although the posting frequency has lowered, it is still active today. Look at <a href="https://p1k3.com/all/" target="_blank">the archive</a> and be amazed.</p>
<p>In the middle of an IRC conversation, I mentioned how I was only reading the blog articles of my friends that I spot in my feedreader, right after mentioning I read 40 of brennen's posts. He proceeded to build an Atom feed with every single post from his website all the way to November of 2020, which is as of writing still available <a href="https://p1k3.com/all.xml" target="_blank">here</a>. If you want to stress test your feedreader, or how much you like to read blog posts, add this feed. Don't expect it to be updated though since it was generated manually just once.</p>
<p>I went through every single of the 1960 entries of this special feed in just one month, and I read the other few dozen posts that were posted in the years since. It was really fun to follow along as ~brennen grows up. He told me he thought the older entries were embarrassing, and I can understand that since I also feel shame at things I put up online when I was younger, most of which I have deleted ever since. But going through all of his posts was fascinating. I wasn't laughing at young him or thinking any less of present him. I was just watching someone growing up a decade earlier than me, in a different country, with a different culture. I believe there is some great historical value in this online diary, just like how historians are studying the past by reading diaries. I hope ~brennen carries on with this great undertaking and continues shoving random tidbits of his life into this website. This is the World Wide Web at its finest: humans just being human.</p>
]]></description>
</item>
<item>
<title>UK Threat Level</title>
<pubDate>Sun, 26 Nov 2023 00:08:23 +0100</pubDate>
<guid isPermaLink="false">uk-threat-level</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.mi5.gov.uk/UKThreatLevel/UKThreatLevel.xml</link>
<description><![CDATA[
<p>As a citizen of a country that still is within the European Union, I am probably legally required to make fun of the United Kingdom, and Brexit is only one in an ever-growing list of reasons why I might want to do that. But there is one thing that I cannot complain about, and that is their government's website.</p>
<p>I could not find it anymore, but a while ago, I read a blog post about someone watching someone else use a <abbr title="PlayStation Portable">PSP</abbr> to access GOV.UK on some free Wi-Fi to do whatever business you might have on your government's website. They used that as an example of how good Web design allows accessibility, even to people whose only device might have an incredibly limited browser and who still need to fill out governement forms online. My own experience with browsing the web on a PSP teaches me that accessing any website nowadays is extremely difficult, but I am willing to believe that blog post because GOV.UK's design sounds like it could actually fit on a PSP, or at least still be readable.</p>
<p>GOV.UK's <a href="https://design-system.service.gov.uk/" target="_blank">design system</a> causes the website to often be listed on lists of "<a href="https://en.wikipedia.org/wiki/Brutalist_architecture" target="_blank">brutalist</a> websites", due to the design being all about clearly displaying what people are looking for, unlike what most heavily monetized blogs or most web apps do now.</p>
<p>But we're not here to talk about website design of course. Another interesting and much more relevant part of the UK governement website is that they have feeds, and a lot of them. Integrating the UK transport accident investigation branches into <a href="https://tilde.town/~lucidiot/itsb/" target="_blank"><abbr title="International Transport Safety Bureau">https://tilde.town/~lucidiot/itsb/</abbr></a> was trivial, just pick the right filters and get your tailored Atom feed. I have started to randomly stumble upon the feeds of other UK public bodies, and I think I'll have to soon spend more time trying to list all the feeds they have because there's a lot to discover. A lot of feeds, of XML namespaces, of relationships to European projects, and probably more.</p>
<p>Let's just start with this rather simple feed: you can get updates on the current <a href="https://www.mi5.gov.uk/threat-levels" target="_blank">national terrorist threat level</a> set by the MI5. I was both surprised at the fact that that's a feed, a feed that only gets updated at most twice a year, and at the fact that they have a separate threat level set for Northern Ireland. I'm fairly sure having a separate <a href="https://en.wikipedia.org/wiki/Vigipirate" target="_blank">Vigipirate</a> level in France for Corsican independentists would just be a self-fulfilling prophecy, causing them to attack more.</p>
<p>I naively hope the UK someday stops all its political bullshit, but only so they can keep feeding me more feeds, and inspire other countries to do the same.</p>
]]></description>
</item>
<item>
<title>Chicago Transit Authority alerts</title>
<pubDate>Sun, 03 Dec 2023 19:57:59 +0100</pubDate>
<guid isPermaLink="false">cta-opml</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Transport</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/cta.opml</link>
<description><![CDATA[
<p>I sometimes find myself a little bored by the list of feeds I would like to share on this feed. Quite a lot of them are blogs, and sharing a lot of blogs quickly gets repetitive. I am far more interested in the more unusual uses of RSS, like the RSS feeds of cyclones I shared a little while ago. So I occasionally look up some random keywords next to "RSS feed" in a search engine. I stumbled upon <a href="https://www.transitchicago.com/rss/default.aspx" target="_blank">the Chicago Transit Authority's RSS feeds</a>, and I was pleased by the sheer amount of them, but also by what they provide.</p>
<p>I like using RSS feeds as a means of getting not just blog posts. Getting warnings about delays or changes on a commute over RSS sounds really nice. Getting the kind of information that people think they need phone notifications for, or the kind of information companies want to you think you need a mobile app full of data collection for. And most importantly, getting it all into a system designed to handle a large amount of information, to sort it, to filter it, to display it conveniently, instead of just a sort of tray that doesn't fit more than a few notifications.</p>
<p>This reminds me of a BlackBerry Q5 I used before I switched to OnePlus. BlackBerry OS 10 is just Android with a BlackBerry UI, and its notification center was quite nice and could clearly better handle a large amount of notifications than Android or iOS' default interfaces. I guess this is just what happens when you design something to be used for more than just doomscrolling and swiping left or right on random faces.</p>
<p>Anyway, since I like to get all the interesting feeds neatly organized into even more XML, <a href="https://tildegit.org/lucidiot/rsrsss/commit/8921e100fac29789c9321af5b57fa2b4cd0444ed/" target="_blank">I wrote a script</a> to generate an OPML file for all the Chicago Transit Authority feeds. Since they provide feeds for both a single line or category of alerts and for all at once, you'll get duplicates if you import that, but at least you will know about all the available feeds.</p>
]]></description>
</item>
<item>
<title>UK National Highways alerts</title>
<pubDate>Sun, 10 Dec 2023 17:33:50 +0100</pubDate>
<guid isPermaLink="false">uk-highways-opml</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Transport</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/uk-highways.opml</link>
<description><![CDATA[
<p>In the same vein as the <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#cta-opml" target="_blank">Chicago Transit Authority alerts</a> <abbr title="Outline Processor Markup Language">OPML</abbr> file I generated, here's another OPML file of transportation alerts, but for England's highways.</p>
<p>These feeds are quite strange. They use non-namespaced extensions to RSS, which are illegal but will not break most feedreaders, to give some metadata on each item:</p>
<dl>
<dt><code>&lt;<dfn>reference</dfn>&gt;</code></dt>
<dd>A unique identifier for the event. I suppose this could just have been a <code>&lt;guid isPermaLink="false"&gt;</code>.</dd>
<dt><code>&lt;<dfn>road</dfn>&gt;</code></dt>
<dd>The number of the road where the event occurs, like <code>M20</code>.</dd>
<dt><code>&lt;<dfn>region</dfn>&gt;</code></dt>
<dd>The region where the event occurs, which is equivalent to the region names in the regional feeds list.</dd>
<dt><code>&lt;<dfn>county</dfn>&gt;</code></dt>
<dd>The county where the event occurs.</dd>
<dt><code>&lt;<dfn>latitude</dfn>&gt;</code></dt>
<dd>The WGS84 latitude of the event's location. This could have been a <code>&lt;georss:point&gt;</code> or a <code>&lt;gml:pos&gt;</code> or a <code>&lt;icbm:latitude&gt;</code> or a <code>&lt;geo:lat&gt;</code>…</dd>
<dt><code>&lt;<dfn>longitude</dfn>&gt;</code></dt>
<dd>The WGS84 longitude of the event's location. This could have been a <code>&lt;georss:point&gt;</code> or a <code>&lt;gml:pos&gt;</code> or a <code>&lt;icbm:longitude&gt;</code> or a <code>&lt;geo:long&gt;</code>…</dd>
<dt><code>&lt;<dfn>eventStart</dfn>&gt;</code></dt>
<dd>ISO 8601 date of when the event starts. This could have been a <code>&lt;ev:startdate&gt;</code> from the <a href="https://web.resource.org/rss/1.0/modules/event/" target="_blank">RSS 1.0 Event Module</a>.</dd>
<dt><code>&lt;<dfn>eventEnd</dfn>&gt;</code></dt>
<dd>ISO 8601 date of when the event ends. This could have been a <code>&lt;ev:enddate&gt;</code> from the <a href="https://web.resource.org/rss/1.0/modules/event/" target="_blank">RSS 1.0 Event Module</a>.</dd>
<dt><code>&lt;<dfn>overallStart</dfn>&gt;</code></dt>
<dd>ISO 8601 date of when the cause of the event starts. For incidents, this is the same as <code>&lt;eventStart&gt;</code>. For road works that start before the event occurs (for example, road works that only close a road during a given time of day), this will be a different date.</dd>
<dt><code>&lt;<dfn>overallEnd</dfn>&gt;</code></dt>
<dd>ISO 8601 date of when the cause of the event ends. For incidents, this is the same as <code>&lt;eventEnd&gt;</code>. For road works that end after the event occurs (for example, road works that only close a road during a given time of day), this will be a different date.</dd>
</dl>
<p>Obviously, not a single feed reader will support these tags.</p>
<p>A larger issue however is just the sheer amount of items. Adding this OPML into a feedreader made it pull over fourteen thousand items. Now of course there are a lot of duplicates, since there are feeds by road, area, and for the whole network, as well as for incidents, roadworks, or both at once. The <a href="https://m.highwaysengland.co.uk/feeds/rss/AllEvents.xml" target="_blank">everything-everywhere firehose</a> still has three thousand items, with tons and tons of roadworks everywhere.</p>
<p>Just the <a href="https://m.highwaysengland.co.uk/feeds/rss/UnplannedEvents.xml" target="_blank">incidents-everywhere</a> feed gets a new item from every few minutes to <strong>every few seconds</strong>, which is the fastest update rate I have ever seen on a feed. I guess those feeds really can only be used by software for further processing.</p>
]]></description>
</item>
<item>
<title>Xidel, the Swiss Army knife of XML and JSON processing</title>
<pubDate>Mon, 18 Dec 2023 14:47:48 +0100</pubDate>
<guid isPermaLink="false">xidel</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tool</category>
<link>https://www.videlibri.de/xidel.html</link>
<description><![CDATA[
<p>You may have noticed that I have started posting the occasional home-grown <abbr title="Outline Processor Markup Language">OPML</abbr> file, to provide <a href="http://opml.org/spec2.opml#subscriptionLists" target="_blank">subscription lists</a> and share many feeds at once. Some of the files include hundreds of feeds, and no, I did not write those files entirely by hand.</p>
<p>The first OPML file that got generated automatically was for the feeds of the <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#nhc-cphc" target="_blank">National Hurricane Center</a>. It initially used <a href="https://tildegit.org/lucidiot/rsrsss/src/commit/773c10f95655ae0650d6b72da5eb7c5d9a02bab9/bin/build_nhc_opml" target="_blank">a shell script</a> that combined some JavaScript code via Node.js and a call to <a href="https://blacksmoke16.github.io/oq/" target="_blank">oq</a>, a wrapper around <a href="https://jqlang.github.io/jq/" target="_blank">jq</a> that can convert between <abbr title="YAML Ain't a Markup Language">YAML</abbr>, <abbr title="JavaScript Object Notation">JSON</abbr> and <abbr title="eXtensible Markup Language">XML</abbr>.</p>
<p>The JavaScript code was retrieving the <abbr title="National Hurricane Center">NHC</abbr>'s <a href="https://www.nhc.noaa.gov/aboutrss.shtml" target="_blank">RSS feeds list</a> page and <a href="https://stackoverflow.com/a/1732454/5990435" target="_blank">parsing it using a regular expression</a>. It would then generate a JSON representation of an OPML file, which gets converted to XML almost as described in <a href="https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html" target="_blank">this nearly 14 years old article</a> by oq. That's how I was used to generating feeds within my <a href="https://tilde.town/~lucidiot/itsb/" target="_blank"><abbr title="International Transport Safety Bureau">ITSB</abbr></a> project.</p>
<p>But that did not mean I was really happy with this. I do not like having a lot of dependencies in my projects, particularly those that can be heavy or restrictive in terms of CPU architectures. Ideally, I would like to be able to do almost everything on Windows XP, since one of my many other niche interests is in older Windows systems.</p>
<h3>XProc and XQuery</h3>
<p>While going through <a href="https://en.wikipedia.org/wiki/Category:XML-based_standards" target="_blank">the XML-based standards category on Wikipedia</a> to look for potentially interesting namespaces for RSS feeds, I stumbled upon <a href="https://xproc.org/" target="_blank">XProc</a>. XProc is an XML schema that lets you define pipelines, particularly to process XML data. This reminded me of <a href="https://tildegit.org/lucidiot/itsb/src/commit/01c48a495059c54022b768e02a199fa8b5474077/itsb.xml" target="_blank">the main XML file of ITSB</a>, which holds both the contents of its homepage and the instructions to generate the hundreds of feeds it serves. A series of <abbr title="eXtensible Stylesheet Language Transformations">XSLT</abbr> turned that file into either the HTML homepage, an OPML containing all the feeds, or a Bash script that can be executed to generate all of the feeds.</p>
<p>XProc looked like an interesting path to rewrite ITSB entirely and make it go beyond only generating feeds for transport accident investigation reports, which is something I have been thinking about for a while. However, the only mature implementations of XProc appear to be in Java, which is a hard no in most of my projects. Searching for <kbd>xproc</kbd> on GitHub made me find <a href="https://github.com/xquery/xproc.xq" target="_blank">xproc.xq</a>, an XProc implementation that relied on a Java implementation of another strange language, <a href="https://www.w3.org/TR/xquery-31/" target="_blank">XQuery</a>.</p>
<p>XQuery, the <em>XML Query Language</em>, is an extension of <a href="https://www.w3.org/TR/xpath-31/" target="_blank">XPath</a>, a language that you probably encountered if you have been working with XML for a while. XPath is used within XSLT, and it's often one of the quickest ways to extract something from an XML document with most XML libraries if you don't want to deal with the complexity of converting between the XML paradigm and your programming language's. You can even use it within your browser, with the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate" target="_blank"><code>Document.evaluate()</code></a> method of the <abbr title="Document Object Model">DOM</abbr> <abbr title="Application Programming Interface">API</abbr>.</p>
<p>While XPath is mostly meant to give a succint way to describe a filter on XML data, XQuery goes beyond that and allows iterating on and processing that XML. You can probably rewrite any XSLT into an XQuery script, and it will probably be easier to read. XQuery allows declaring functions, using variables, etc. and even provides a syntax that reminds me of <abbr title="Structured Query Language">SQL</abbr> and <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>:</p>
<figure>
<pre>for $galaxy in //galaxy, $planet in .//planet
group by $galaxy, $type as xs:string := $planet/@type
where count($planet) > 3
group by $type
let $count := count($galaxy)
stable order by $count descending
count $i
return &lt;type id="{$i}" name="{$type}" count="{$count}" /&gt;
</pre>
<figcaption>Example of an XQuery <abbr title="For, Let, Where, Order by, Return">FLWOR</abbr> query, pronounced <em>flower</em></figcaption>
</figure>
<p>This example, in an imaginary XML document holding the universe, computes how many galaxies have at least three planets of a given type, then returns those planet types, starting with the type with the most galaxies, and including a unique identifier. The ordering is marked as stable, forcing the XQuery implementation to order any types that have the same count in the same order on every execution. This is a quite complicated expression, but you can do way worse in XQuery. This would probably be doable with an XSLT, but it would definitely be very painful.</p>
<p>The XProc implementation I found in XQuery was using some <a href="https://www.progress.com/marklogic/server" target="_blank">MarkLogic Server</a> extensions. It is a document-oriented database that lets you run either XQuery or JavaScript to query its data, and it is proprietary, so I was definitely not interested in trying to use it. A fun thing to note however is it that it also provided unit tests via <a href="https://robwhitby.github.io/xray/" target="_blank">xray</a>. You know you've got a strong query language when you can have a unit testing framework for it!</p>
<p>I went looking for an open-source XQuery implementation that does not require Java, and that could provide enough vendor-specific extensions to replace those used within xproc.xq. I first found <a href="http://www.zorba.io/home" target="_blank">Zorba</a>, basically MarkLogic Server but open-source, and it provided an impressive amount of extensions. You can even <a href="http://www.zorba.io/documentation/latest/modules/connectors/sqlite" target="_blank">interact with SQLite databases</a> in it, to use a query language within a query language. Unfortunately, Zorba is an incredible mess to build, so I quickly gave up trying to package it for Alpine Linux and tried to find something else.</p>
<h3>Xidel</h3>
<p>I gave up for a little while, then stumbled upon <a href="https://www.videlibri.de/xidel.html" target="_blank">Xidel</a>, an open-source tool written in Pascal that supports applying CSS selectors, XPath queries, XQuery scripts, as well as JSONiq, a JSON equivalent of XPath and XQuery that got merged into XPath and XQuery 3.1. It can make HTTP requests, parse HTML (not just XHTML), submit HTML forms found in pages, interact with the filesystem, run other processes, and more.</p>
<p>It could allow me to merge every single of the tools that I use in ITSB into just one dependency. And that dependency is just one statically compiled executable that I can easily download automatically in scripts if I need it. And Pascal can be compiled on <a href="https://wiki.freepascal.org/Platform_list" target="_blank">a lot of platforms</a>. Xidel does work on Windows XP!</p>
<p>I started playing around with it, and very quickly decided to rewrite my NHC OPML generator with it to drop the Node.js, oq and jq dependencies. That is how I ended up with <a href="https://tildegit.org/lucidiot/rsrsss/src/commit/db7bc7d82802c219245ad7d3f40188ce67111b82/xquery/opml/noaa/nhc.xqy" target="_blank">the current implementation of the NHC generator</a>.</p>
<p>I then <a href="https://tildegit.org/lucidiot/rsrsss/commit/79daa5d69032be42fba8036421a3327db5d28945" target="_blank">rewrote the CSS sprites generator</a>. I use a single image for all of the icons displayed in the web version of RSRSSS, and some CSS to take just a portion of the image each time to get one icon at a time. I also took the time to optimize the CSS.</p>
<p>That sent me <a href="https://status.cafe/statuses/33023" target="_blank">on a roll</a>, and I started writing a whole bunch of XQuery scripts, including one to <a href="https://tildegit.org/lucidiot/rsrsss/commit/0f0ed2084b59002b9ab1afb8d38f5941ff7fa4a6" target="_blank">use the W3C Feed Validation Service from the command line</a>, and started looking for websites that would give me good OPML files to make.</p>
<p>That's how there has been a wave of OPML files coming in recently. I just want more excuses to write in XQuery! If I find the motivation to work on ITSB again, I will definitely be introducing Xidel in it and start slowly converting everything to it. I have also considered using it as a static site generator, and for a few other projects.</p>
<p>In some email exchanges, I have dubbed Xidel the <em>Overwhelmingly Powerful Mother Of All Legendary XML/HTML/JSON Processor of Doom</em> due to how impressed I was with how versatile it, and XQuery, are.</p>
<p>So, if you find yourself trying to extract data from HTML, XML or JSON documents, do check out <a href="https://www.videlibri.de/xidel.html" target="_blank">Xidel</a>. It might not be as trendy as other tools like jq, but it is a lot more powerful.</p>
]]></description>
</item>
<item>
<title>windows93</title>
<pubDate>Sun, 24 Dec 2023 11:34:37 +0100</pubDate>
<guid isPermaLink="false">windows93</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>http://www.windows93.net/rss/</link>
<description><![CDATA[
<p>Something like 15 years ago, back when I was still excited by tons of things with computing, and not tired of where the whole industry is going thanks to capitalism, I discovered a service called <em>Desktoptwo</em>, and more generally the concept of a WebOS.</p>
<p>Desktoptwo was emulating some mix of the Windows, Mac and Linux desktop experiences, in a web browser. You had a few simple apps available like a notepad, and some storage space to keep your files on their servers. You could also use OpenOffice Writer, Calc and Impress: those would open a remote desktop connection within the browser to the actual OpenOffice running on their servers. It was quite impressive for the time.</p>
<p>At a similar time, I had also played with the Microsoft Office 2007 "Test Drive", powered by Runaware. Using Internet Explorer only, you could for a short amount of time play around with Office 2007 on a Windows XP virtual machine, using Citrix. Runaware also had other demos running, including one for Sage. I remember spending a lot of time just messing with those virtual machines, without knowing anything about the technology that made this possible yet. I was like 10 years old!</p>
<p>A few years later, I had found eyeOS, yet another WebOS, but that you could self-host this time. It had more applications available, but they were less interesting—the whole thing was more meant to be a demo of what apps you could create with it. They had something akin to an app store. I tried both their own demo instance and hosted my own, as I had learnt a bit more about webservers by that time.</p>
<p>I now tend to be wary of large piles of JavaScript like those as the current state of the JavaScript ecosystem tends to make everything worse, so I don't generally care much about the current attempts at making a new WebOS, like <a href="https://www.os-js.org/" target="_blank">OS.js</a>… unless they are fun.</p>
<p>Windows 93 is a pretty well done recreation of the Windows 95 user interface that started in 2014. It has a community that provided plenty of new apps to give the system a lot of content and fill it with weird jokes and "viruses". This is definitely not meant to be a replacement for a desktop OS like Desktoptwo or eyeOS attempted, and just a weird bundle of apps and games that mix the modern web and 30-year-old designs.</p>
<p>Their RSS feed gives some rare status updates about the project. I thought the project had been pretty much dead by now, since the feed had gotten no updates at all in a long while, but they announced that they are working on a full rewrite. Version 3 will be open source, and it will be based on <a href="https://github.com/windows93dotnet/sys42" target="_blank">Sys42</a>, their own custom framework that skips one of the worst parts of modern JavaScript (Webpack) and allows building any web OS, not just a whimsy Windows 95 clone.</p>
<p>I am impressed by how much effort people sometimes put into these projects.</p>
]]></description>
</item>
<item>
<title>Make an Atom feed for a single HTML page in two minutes</title>
<pubDate>Sun, 31 Dec 2023 23:38:35 +0100</pubDate>
<guid isPermaLink="false">html-journal</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tool</category>
<link>https://journal.miso.town/</link>
<description><![CDATA[
<p>If you happen to be writing your blog on a single HTML5 page, or are planning to, then you might be interested in using <a href="https://journal.miso.town/" target="_blank">HTML Journal</a>. This simple tool from the cool <a href="https://m15o.net/" target="_blank">m15o</a> lets you convert your webpage into an Atom feed, provided you follow some rather simple rules:</p>
<ul>
<li>Have one, and only one, <code>&lt;h1&gt;</code> tag. That will be your feed's title.</li>
<li>Have each blog post surrounded in <code>&lt;article&gt;&lt;/article&gt;</code> tags.</li>
<li>Have each blog post start with an <code>&lt;h2&gt;</code> tag, whose contents should start with an ISO 8601 date: <code>2023-02-31 Climbing the Reichstag dressed as Spider-Man</code>. The date will be the Atom entry's date, and the rest will be the post's title.</li>
<li>Have literally anything else within that article; that will be the post's content.</li>
</ul>
<p>If you like a verbose specification, well <a href="https://m15o.ichi.city/site/subscribing-to-a-journal-page.html" target="_blank">there's one</a>. But the list above is the gist of it really.</p>
<p>Once you've got your page available somewhere online, you can use <code>https://journal.miso.town/atom?url=</code> followed by your page's URL to get a feed. Or you can use <a href="https://journal.miso.town/journal-to-atom" target="_blank">this form</a> if you can't be bothered with URL-encoding the URL, which is definitely understandable. You can also <a href="https://journal.miso.town/validate-by-url" target="_blank">use a validator</a>.</p>
<p>There are plenty of HTML-to-RSS tools, including some that use CSS selectors, let you do custom scripting, or are tailored to one specific platform like Twitter. But I really like the simplicity of HTML Journal: Just structure the page in the spirit that HTML5 intends, and suddenly, you've got a feed.</p>
<hr />
<p>This is the 100th post on RSRSSS, and it recently became three years old. Thanks for following along, and I'll see you next year!</p>
]]></description>
</item>
<item>
<title>Make an Atom feed for a bunch of HTML pages in two minutes</title>
<pubDate>Sun, 07 Jan 2024 16:45:07 +0100</pubDate>
<guid isPermaLink="false">html-blog</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tool</category>
<link>https://blog.miso.town/</link>
<description><![CDATA[
<p>Last time, I shared a neat tool called <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#html-journal">HTML Journal</a> to create an Atom feed from a webpage that follows a rather simple structure. But what happens if you have a lot of pages, or can't have your content on a single page? Here comes <a href="https://blog.miso.town/" target="_blank">HTML Blog</a>, from the same creator, with the same spirit. This time, you have the following requirements:</p>
<ul>
<li>Have one, and only one, <code>&lt;h1&gt;</code> tag. That will be your feed's title.</li>
<li>Have an unordered list (<code>&lt;ul&gt;</code>) to list all your pages.</li>
<li>In each list item (<code>&lt;li&gt;</code>), have a <code>&lt;time&gt;</code> tag to specify the ISO 8601 date of the post. That will be the Atom entry's date.</li>
<li>In each list item, have a <code>&lt;a&gt;</code> tag. The <code>href</code> should point to the page of your post, and the link's contents will be the post's title.</li>
</ul>
<p>Just like with HTML Journal, there is <a href="https://m15o.ichi.city/site/subscribing-to-a-blog.html" target="_blank">a longer specification</a> for this.</p>
<p>And just like with HTML Journal, you can use <code>https://blog.miso.town/atom?url=</code> followed by the blog's URL, or use <a href="https://blog.miso.town/blog-to-atom" target="_blank">this form</a>, and you get <a href="https://blog.miso.town/validate-by-url" target="_blank">a validator</a>.</p>
]]></description>
</item>
<item>
<title>Dev Zines</title>
<pubDate>Sun, 14 Jan 2024 18:30:27 +0100</pubDate>
<guid isPermaLink="false">devzines</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://devzines.glitch.me/rss</link>
<description><![CDATA[
<p>A list of zines related to software development or just tech in general, along with tools, tutorials, templates to create zines, and events such as zine fairs. An interesting random find from Tumblr. It doesn't seem to be getting many updates unfortunately!</p>
]]></description>
</item>
<item>
<title>Another reason why feeds won't die</title>
<pubDate>Sun, 21 Jan 2024 21:16:10 +0100</pubDate>
<guid isPermaLink="false">long-live-rss</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Opinion</category>
<description><![CDATA[
<p>I will occasionally hear about the neverending debate on whether or not RSS and Atom feeds are dead, or are dying, or will die. This debate has been ongoing ever since the mere concept of feeds started showing up online. The most common arguments nowadays are that nobody uses RSS feeds anymore now that Google Reader has shut down and that everyone just uses social media. But as I have shown a few times in this feed, feeds are far from about to die. Sure, maybe Google Reader shutting down has made feeds less visible, or may have caused a small dip in the number of subscribers to some feeds. Sure, maybe social media makes people care about feeds less, but that's because they just don't care at all about the content of said feeds and don't need tools to handle that content, it's not a technical issue or something that obsoletes feeds.</p>
<p>But here's an argument that I don't remember ever seeing in this constant bickering: the fact that there are technologies out there that rely on feeds. Moving those away from feeds would be very costly. Here are a few use cases that I found while going down different rabbit holes.</p>
<h3>Podcasts</h3>
<p>Podcasts are still very much popular. While most people nowadays will be listening to podcasts through some streaming services like Spotify, iTunes, or podcast-specific platforms, podcasts started out just as <code>&lt;enclosure&gt;</code> tags within RSS feeds, and that's how those platforms fetch them.</p>
<p>Spotify imports podcasts from RSS feeds and have <a href="https://providersupport.spotify.com/article/podcast-delivery-specification-1-9" target="_blank">a specification</a> for how they parse them. They also <a href="https://support.spotify.com/us/podcasters/article/your-rss-feed/" target="_blank">provide a feed</a> if you are hosting your podcast on Spotify directly, so that you can share it elsewhere. All podcast hosting platforms provide feeds.</p>
<p>iTunes <a href="https://podcasters.apple.com/support/823-podcast-requirements" target="_blank">relies on feeds</a>. They have <a href="https://help.apple.com/itc/podcasts_connect/#/itcb54353390" target="_blank">their own XML namespace</a>, which is likely to be found on pretty much every podcast feed as that became a <em>de facto</em> standard namespace for podcasts before the <a href="https://podcastnamespace.org/" target="_blank">podcast namespace</a> showed up.</p>
<p>Google Podcasts <a href="https://support.google.com/podcast-publishers/answer/9889544?hl=en" target="_blank">feeds on feeds</a>, and also allows subscribing to an RSS feed directly without it having to be submitted to Google.</p>
<h3>News</h3>
<p>Obviously, a large amount of feeds are dedicated to news. Every single news website out there has an RSS or Atom feed hidden somewhere. Most of them will be sharing a link to it, either with an RSS icon somewhere on the page or with <a href="https://www.rssboard.org/rss-autodiscovery" target="_blank">RSS Autodiscovery</a>, but even if they don't, they still do have a feed. They have to have a feed in order to survive.</p>
<p>How can I say that so confidently? Well, because <a href="https://support.google.com/news/publisher-center/answer/9545414" target="_blank">Google News feeds on feeds</a>, <a href="https://helpcenter.microsoftstart.com/kb/articles/43-onboarding-a-new-feed-with-fmt" target="_blank">Microsoft Start and MSN.com feed on feeds</a>, <a href="https://support.google.com/faqs/answer/9396344" target="_blank">Google Assistant feeds on feeds</a>, <a href="https://about.flipboard.com/rss-guidelines/" target="_blank">Flipboard feeds on feeds</a>, and just about any other news aggregator uses feeds.</p>
<p>It's the standard way to aggregate news articles, and a lot of people will start with a news aggregator to get their news, particularly Google News. It has so much weight on how news are accessed from that setting <code>news.google.com</code> as your referrer on HTTP requests can unlock paywalls and that <a href="https://en.wikipedia.org/wiki/Google_News#Compensation_for_disseminating_access_to_news" target="_blank">various laws have been drafted</a> to make Google News pay news publishers.</p>
<h3>Ads</h3>
<p>Google has leaned rather heavily on RSS, including for ads. For example, I randomly found <a href="https://support.google.com/admanager/answer/7501017" target="_blank">this sample feed</a> for an ad tech called Dynamic Ad Insertion, which sounds like it is how <del>soulless people</del> marketers can insert ads into livestreams and VOD. <a href="https://support.google.com/merchants/answer/160589" target="_blank">Google Shopping also feeds on feeds</a>. Those feeds can be <a href="https://github.com/w3c/feedvalidator/blob/ff89646c3f6869058dfcf5a3cf9b6ead49bbe42d/testcases/gbase/rss2/vehicles2.xml" target="_blank">really detailed</a> because of <a href="https://web.archive.org/web/20080915080232/http://base.google.com/base/attribute_list.html" target="_blank">Google Base</a>, yet another product they killed. <a href="https://support.google.com/docs/answer/3093337" target="_blank">Google Docs supports feeds</a>. They probably are in other places, but since Google's ads are incredibly obfuscated, I don't even want to try and dig deeper into their unhelpful help to find more examples.</p>
<p>Google Base's legacy is also found at other companies: Facebook lets advertisers send them a list of products as <a href="https://developers.facebook.com/docs/marketing-api/catalog/reference#example-atom-xml-feed-commerce" target="_blank">RSS and Atom feeds with Google Base attributes</a>.</p>
<h3><abbr title="Geographic Information Systems">GIS</abbr></h3>
<p>Real-time information that includes geolocations can be quite important, both in the public and private sectors. Waze for Cities <a href="https://support.google.com/waze/partners/answer/13458165" target="_blank">exports data as GeoRSS</a>. A lot of GIS software will support GeoRSS imports. And the <abbr title="Geography Markup Language">GML</abbr> and <abbr title="Keyhole Markup Language">KML</abbr> formats supports automatic updates. KML, the format behind Google Earth's data, is supported by the <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a> for a reason.</p>
<h3>Overcomplicated enterprise apps</h3>
<p>Probably the only reason why <a href="https://learn.microsoft.com/en-us/dotnet/api/system.servicemodel.syndication.syndicationfeed" target="_blank">the .NET Framework has a feed parser</a> is because of <a href="https://learn.microsoft.com/EN-US/dotnet/framework/wcf/feature-details/wcf-syndication" target="_blank">feed support in <abbr title="Windows Communication Foundation">WCF</abbr>.</a> <abbr title="Windows Communication Foundation">WCF</abbr> aims to represent business processes that mix a whole bunch of other apps together, like how hiring someone will require HR approval on some particular app, then payroll needs to be notified, security issues a badge, etc. You draw the diagrams of the processes in Visual Studio, implement every step as a bunch of .NET code that probably calls out to other apps, and then have a WCF server somewhere to handle that stuff.</p>
<p>IBM has <a href="https://www.ibm.com/docs/en/baw/23.x?topic=format-interface-atom-feed" target="_blank">an equivalent support in Business Automation Workflow</a>.</p>
<p>Oracle HCM <a href="https://docs.oracle.com/en/cloud/saas/human-resources/23d/farws/Working_with_Atom.html" target="_blank">provides Atom feeds</a> so that other apps can be notified of changes on more HR stuff.</p>
<p>Corporate applications are probably among the slowest-moving software out there, so it's very unlikely that those will drop their support for feeds any time soon.</p>
<h3><abbr title="Too long; didn't read">TL;DR</abbr>: Money</h3>
<p>Those few examples are far from an exhaustive list and they just show some of the things I have stumbled upon, but they are enough to prove that behind RSS and Atom feeds, there is <em>money</em>. And if a technology has been made necessary to make a profit somewhere, then changing it will be too risky and maintaining it becomes essential to capitalists. Even if the general public completely stops using feeds, they will still be out there somewhere, and thus tools, software libraries will still be out there to support them, and nothing will stop anyone from still using feeds.</p>
]]></description>
</item>
<item>
<title>Open Source Musings</title>
<pubDate>Mon, 29 Jan 2024 19:36:11 +0100</pubDate>
<guid isPermaLink="false">open-source-musings</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://opensourcemusings.com/feed.xml</link>
<description><![CDATA[
<p>There are plenty of websites showcasing various open source software projects, and plenty of websites encouraging you to use Linux, but a blog that strongly goes against <em>techies</em> and instead focuses solely on going FOSS for everyone but them is a bit rarer. <a href="https://scottnesbitt.net" target="_blank">Scott Nesbitt</a> has multiple blogs that I might showcase in here, and also has strong opinions on tech. <em>Open Source Musings</em> is his blog where he shows how he uses Linux to write, edit images, blog, read ebooks, or just browse the web, things that are not aimed at a highly skilled technical audience; how to use Linux when you just want to use a computer every sometimes without being a nerd.</p>
]]></description>
</item>
<item>
<title>Houston TranStar</title>
<pubDate>Sun, 04 Feb 2024 18:10:06 +0100</pubDate>
<guid isPermaLink="false">transtar-opml</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Transport</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/transtar.opml</link>
<description><![CDATA[
<p>I am writing this while sitting on a concrete barrier on a highway. Farmers all around Europe are angry, and in France this results in them blocking some highways. In my city, this means turning the highway into a urban park. People are walking around, cycling, playing tennis, having picnics, or even paragliding, and I am here, writing a blog post about RSS feeds. I mean, what better than a highway to explore the information superhighway and find feeds about other highways?</p>
<p>I wanted to find a transportation themed feed to post here due to the weird occasion. I found <a href="https://traffic.houstontranstar.org/rss/rss_info.aspx" target="_blank">the Houston TranStar RSS feeds</a>, for information about the various highways around Houston. I made <a href="https://envs.net/~lucidiot/rsrsss/opml/transtar.opml" target="_blank">yet another OPML file</a> to list all of those feeds if you feel like adding them all.</p>
<p>So I can now say that I have walked onto a highway to write an XQuery script, while watching a cyclist pass by while shouting "The road is ours! The world belongs to us!" This is a very… interesting day.</p>
]]></description>
</item>
<item>
<title>Press F for deleted entries on Atom feeds</title>
<pubDate>Sun, 11 Feb 2024 17:11:12 +0100</pubDate>
<guid isPermaLink="false">tombstones</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Tip</category>
<link>https://www.rfc-editor.org/rfc/rfc6721.html</link>
<description><![CDATA[
<p><a href="https://www.rfc-editor.org/rfc/rfc6721.html" target="_blank">RFC 6721</a>, <em>The Atom "deleted-entry" Element</em>, defines an XML namespace to mark some entries in an Atom feed as having been deleted. Deleting an entry from a feed usually makes no change for feedreaders, as they just assume that a feed only includes a portion of the articles and a deleted article just went over the size limit of the feed. This element is supposed to explicitly tell feedreaders to destroy this entry.</p>
<p>I particularly like the URL of this namespace.</p>
<figure>
<pre>&lt;feed
xmlns="http://www.w3.org/2005/Atom"
xmlns:at="http://purl.org/atompub/tombstones/1.0"
&gt;
&lt;at:deleted-entry
ref="tag:example.org,2032:/entries/1"
when="2032-09-11T12:46:00Z"
/&gt;
&lt;at:deleted-entry
ref="tag:example.org,2032:/entries/2"
when="2032-09-11T13:03:00Z"
&gt;
&lt;at:by&gt;
&lt;name&gt;Chuck Norris&lt;/name&gt;
&lt;email&gt;chucknorris@example.org&lt;/email&gt;
&lt;/at:by&gt;
&lt;at:comment&gt;Chuck Norris did not like this post.&lt;/at:comment&gt;
&lt;/at:deleted-entry&gt;
&lt;/feed&gt;</pre>
<figcaption>Example of deleted entries within an Atom feed</figcaption>
</figure>
<p>The specification includes various considerations on ensuring that the entry was indeed deleted by the feed's authors and not someone else, as well as supporting the aggregation of deleted entries from multiple feeds into one. It is also possible to have a separate XML file that only contains the <code>&lt;deleted-entry&gt;</code> tag, which would have a MIME type of <code>application/atomdeleted+xml</code>, with an extension of <code>.atomdeleted</code>. Do check out the RFC if you want to learn more.</p>
<p>Of course, this is totally unreliable, since any reader that does not support this namespace will ignore it completely, and some potentially evil readers might even highlight the entry as needing to become another example of the <a href="https://en.wikipedia.org/wiki/Streisand_effect" target="_blank">Streisand effect</a>. But in some applications, such as automated processing of Atom feeds for synchronizing some data, knowing for sure that something has been removed can be useful.</p>
<p>I searched for code that was referencing this namespace and found that a few YouTube Atom feed parsers do handle <code>deleted-entry</code> elements, so it might be possible that YouTube uses those tags. See <a href="https://github.com/suisei-cn/pystargazer/blob/4c677d0695c22e168477ca8ec94f5bb36a5a565b/pystargazer/plugins/youtube/__init__.py#L176" target="_blank">here</a> and <a href="https://github.com/lichess-org/lila/blob/9ffa9d8ff6da37a4a1356f48f3643b44f66e2c08/modules/streamer/src/main/YouTubeApi.scala#L71" target="_blank">here</a>.</p>
<p>Nothing stops you from adding <code>&lt;at:deleted-entry&gt;</code> elements to RSS feeds as well, just like how other Atom extensions can already be used there. But most feed readers will skip over this namespace in Atom feeds, so it is likely that almost nobody will support this on RSS feeds.</p>
<p>And if you were expecting actual tombstones from this namespace, well do know that <a href="https://www.eunicetoday.com/taxonomy/term/462/feed" target="_blank">RSS feeds for obituaries</a> are a thing. You're welcome.</p>
]]></description>
</item>
<item>
<title>tempr.email</title>
<pubDate>Sun, 18 Feb 2024 16:13:21 +0100</pubDate>
<guid isPermaLink="false">tempr-email</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<description><![CDATA[
<p>Thanks to marketing and analytics, temporary email addresses are too often necessary to keep some amount of control over your inbox. <a href="https://tempr.email/" target="_blank">tempr.email</a>, originally discard.email, is a service that provides such addresses, with a rather wide range of domains as well as the possibility to use your own custom domain. While it is very likely that all of the listed domains are included in lists of temporary email domains used by some websites to block them, you can still hope that at least one of these domains is going to work as the lists used by websites may not be fully up to date. If I need a temporary address, and can't find any credentials on <a href="https://bugmenot.com/" target="_blank">BugMeNot</a>, I will probably be using tempr.email.</p>
<p>I recently discovered that it has <abbr title="Really Simple Syndication">RSS</abbr> 2.0 and Atom support, to let you monitor for emails received at your trash address. To activate this, you need to use an address on a domain that supports locking addresses with a password. Those domains are marked with the <code>(PW)</code> suffix on the homepage. Pick an address that is unlikely to have already been used, and you can then set a password on the web UI. The password is removed after 3 months of inactivity.</p>
<p>Once you have a password, you can access the RSS and Atom feeds using the following URLs:</p>
<ul>
<li><code>https://tempr.email/en/rss/[email address]:[MD5 hash of your password]</code></li>
<li><code>https://tempr.email/en/atom/[email address]:[MD5 hash of your password]</code></li>
</ul>
<p>For example, if your address is <code>nope@gmai.com</code> and your password is <code>hunter2</code>, then your feeds will be the following:</p>
<ul>
<li><code>https://tempr.email/en/rss/nope@gmai.com:2ab96390c7dbe3439de74d0c9b0b1767</code></li>
<li><code>https://tempr.email/en/atom/nope@gmai.com:2ab96390c7dbe3439de74d0c9b0b1767</code></li>
</ul>
<p>Note that if you are trying to use <code>md5sum</code> to compute the MD5 hash, do not forget to use <code>print</code> or <code>printf</code>, not <code>echo</code>, because <code>echo</code> will add a line break character that will also be hashed.</p>
<figure>
<pre># Wrong hash!
$ echo hunter2 | md5sum
6a0f0731d84afa4082031e3a72354991 -
# Correct hash
$ printf hunter2 | md5sum
2ab96390c7dbe3439de74d0c9b0b1767 -
</pre>
<figcaption>Hashing the password with <code>md5sum</code></figcaption>
</figure>
<p>That's neat. I like the idea of emails to RSS feeds, since it lets you centralize even more things into your feedreader. There are obvious security concerns here with the automatic password removal, or the fact that MD5 hashes are used, which could imply passwords are stored as MD5 hashes, or worse, a <a href="https://plaintextoffenders.com/" target="_blank">plain text offender</a> status. But it doesn't sound like it would be that difficult to secure your feed a little harder and get any email inbox as an RSS feed.</p>
]]></description>
</item>
<item>
<title>webcomic name</title>
<pubDate>Sun, 25 Feb 2024 14:52:42 +0100</pubDate>
<guid isPermaLink="false">webcomicname</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://webcomicname.com/rss</link>
<description><![CDATA[
<p>This is a quite well-known comic, created by <a href="https://en.wikipedia.org/wiki/Alex_Norris_(cartoonist)" target="_blank">Alex Norris</a> and hosted on Tumblr. Most posts will star a pink blob, with three panels: one introduces a situation, the second adds a problem, and in reaction to it, the pink blob says <cite>oh no</cite> in the final panel. While it was intended as a parody of <em>relatable comics</em>, a genre of webcomics widely shared on social media involving common situations in real life that most of us can relate to, the parody part is not often well understood and many see it as a relatable comic in itself. I did too before actually researching what to say in this description!</p>
<p>The comic updates less regularly now, but it is not dead at all, and the occasional comic showing up in my feedreader never fails to make me laugh at least a little. A nice addition to a large pile of feeds if you want a break from reading news articles from time to time.</p>
]]></description>
</item>
<item>
<title>Sweet Home 3D</title>
<pubDate>Tue, 05 Mar 2024 14:19:28 +0100</pubDate>
<guid isPermaLink="false">sweethome3d</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">Feed</category>
<link>https://www.sweethome3d.com/blog/rss.xml</link>
<description><![CDATA[
<p>In 2008, while I was in <em>collège</em> (the French middle school) and before I even knew about the concept of open source software, I discovered Sweet Home 3D on a laptop that my cousins had recovered from a nearby dump.</p>
<p>That laptop was running Windows XP Pro. My cousins knew about the trick where you can reboot into Safe Mode and get access to a usually passwordless <em>Administrator</em> account, but they were only used to the Home Edition login screen where you can just click into the account, not to the Pro login screen where you have to type the username and password. I tried typing in <kbd>Administrator</kbd> without a password, and did get into the laptop, so we could play games on that laptop during our holidays.</p>
<p>I brought that laptop to a skate park and drew a scooter on Paint, then put it into an <abbr title="Rich Text Format">RTF</abbr> document next to a cookie recipe, making this the oldest document that I created and still have in my archives.</p>
<p>A few months later, I stumbled upon Sweet Home 3D again, during a time where I was playing the Sims 2 and 3 with a classmate, and played with it and other 3D software to design random homes. I say design homes, but really I was just creating a new plan, drawing a house, and giving up halfway through or just making Sweet Home 3D render complete nonsense. I think more houses should have all of their furniture upside down, that sounds much more practical.</p>
<p>Anyway, I still do occasionally play with it nowadays. I found out that it was made by a French developer, and that the French forensics service got them to add more models, so you can now put shotguns in your houses! And most importantly of course, it has a blog with an <a href="https://www.sweethome3d.com/blog/rss.xml" target="_blank">RSS feed</a> and an <a href="https://www.sweethome3d.com/blog/atom.xml" target="_blank">Atom feed</a>.</p>
]]></description>
</item>
<item>
<title>Build a service status page as an RSS feed</title>
<pubDate>Sun, 10 Mar 2024 17:48:57 +0100</pubDate>
<guid isPermaLink="false">servicestatus</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">XSD</category>
<link>https://envs.net/~lucidiot/rsrsss/xsd/servicestatus.xsd</link>
<description><![CDATA[
<p>It is quite common nowadays for websites, or just any Internet-powered application or service, to have a webpage somewhere reporting on the status of said service, to the extent that many companies and other services exist just to provide those. Those status services often include e-mail alerts that you can subscribe to to get notified of an outage or a planned maintenance on the service. <a href="https://www.atlassian.com/software/statuspage" target="_blank">Statuspage</a> is one such service, one of the most well known due to it having been vored by Atlassian. Statuspage doesn't just provide e-mails though, it also has feeds! An <a href="https://metastatuspage.com/history.rss" target="_blank"><abbr title="Really Simple Syndication">RSS</abbr> feed</a> and an <a href="https://metastatuspage.com/history.atom" target="_blank">Atom feed</a> are available, providing a history of the planned maintenances or incidents.</p>
<p>Unfortunately, those feeds are annoying to deal with for machines. If you want to tell anything about the service's status somewhere else, scraping data from the feeds will be just as annoying, if not more, than the HTML document. We can do better though, and we have been able to do better for over twenty years.</p>
<p>The <a href="https://web.resource.org/rss/1.0/modules/servicestatus/" target="_blank"><abbr title="Resource Description Framework">RDF</abbr> Site Summary 1.0 Service Status module</a> is one of many forgotten extensions to <abbr title="RDF Site Summary">RSS</abbr> 1.0. In an incredible plot twist you could never expect from its name, it is meant to report on a service's status, and provides some extra XML elements to help with that.</p>
<figure>
<pre>&lt;rss
version="2.0"
xmlns:ss="http://purl.org/rss/1.0/modules/servicestatus/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://purl.org/rss/1.0/modules/servicestatus/
https://envs.net/~lucidiot/rsrsss/xsd/servicestatus.xsd
"
&gt;
&lt;channel&gt;
&lt;!-- ... --&gt;
&lt;ss:aboutStats&gt;https://envs.net/~lucidiot/rsrsss/feed.xml#servicestatus&lt;/ss:aboutStats&gt;
&lt;item&gt;
&lt;!-- ... --&gt;
&lt;ss:responding&gt;true&lt;/ss:responding&gt;
&lt;ss:lastChecked&gt;1970-01-01T00:00:00+00:00&lt;/ss:lastChecked&gt;
&lt;ss:lastSeen&gt;1970-01-01T00:00:00+00:00&lt;/ss:lastSeen&gt;
&lt;ss:availability&gt;100&lt;/ss:availability&gt;
&lt;ss:averageResponseTime&gt;0.5&lt;/ss:availableResponseTime&gt;
&lt;ss:statusMessage&gt;Everything is fine.&lt;/ss:statusMessage&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;</pre>
<figcaption>Example of an <abbr title="Really Simple Syndication">RSS</abbr> 2.0 feed with every optional Service Status module element in use</figcaption>
</figure>
<p>Using those extra elements, you can report in a more machine-readable format on how your service is doing. Every element in this namespace is optional, and you can use them to report on whether your service is working, when that was last checked, when the server last worked, how well it is working, how fast it is working, and leave a message for human consumption, usually to report about how you are doing on fixing a specific issue.</p>
<p>The above example uses the <a href="https://www.w3.org/TR/xmlschema-1/#xsi_schemaLocation" target="_blank"><code>xsi:schemaLocation</code></a> attribute to point <abbr title="XML Schema Definition">XSD</abbr> validators to <a href="https://envs.net/~lucidiot/rsrsss/xsd/servicestatus.xsd" target="_blank">the schema</a> I wrote to validate this namespace, if you want to validate your feed very hard. The <a href="https://validator.w3.org/feed/" target="_blank">W3C Feed Validation Service</a> is aware of the existence of this namespace, so it won't warn about an unknown namespace, but it does not do any validation on its elements, so you'll need that schema to do any interesting validation.</p>
<p>The overengineered <a href="https://envs.net/~lucidiot/rsrsss/xsl/style.xsl" target="_blank"><abbr title="Extensible Stylesheet Language Transformation">XSLT</abbr></a> used to display this feed in HTML in modern browsers has been updated and supports this namespace, so you could use it directly to roll a status page that is nothing but an RSS feed, if you don't want to duplicate information. You can <a href="https://envs.net/~lucidiot/rsrsss/feed.xml#servicestatus" target="_blank">open this post in a compatible browser</a> to get a preview.</p>
<h3>Reference</h3>
<dl>
<dt><code>&lt;<dfn>ss:aboutStats</dfn>&gt;</code></dt>
<dd>
<p>An <abbr title="Resource Description Framework">RDF</abbr> resource that should describe how the <code>availability</code> and <code>averageResponseTime</code> statistics are calculated in this feed. This should be used only on a <code>channel</code> element.</p>
<p>Note that <a href="https://stackoverflow.com/a/48195644/5990435" target="_blank">anything is an RDF resource</a>, and there are many ways to serialize an RDF resource as XML. However, <a href="https://web.resource.org/rss/1.0/modules/servicestatus/" target="_blank">the official specification</a> only uses the form where the element just contains a URL, therefore this form is recommended. Feed generator implementers that do not know about RDF and its <a href="https://www.w3.org/TR/rdf-syntax-grammar/" target="_blank">XML representation</a> are likely to only use this form, and feed parser implementers are likely to only support this form.</p>
</dd>
<dt><code>&lt;<dfn>ss:responding</dfn>&gt;</code></dt>
<dd>Whether or not the service is responding.</dd>
<dt><code>&lt;<dfn>ss:lastChecked</dfn>&gt;</code></dt>
<dd>The most recent time a check was performed, as a <a href="https://www.w3.org/TR/NOTE-datetime" target="_blank">W3C datetime</a>, a subset of ISO&nbsp;8601. You may want to have both the usual <code>&lt;pubDate&gt;</code> element and this element to share the same values. When the <code>responding</code> element is set to <code>true</code>, this should be exactly equal to <code>lastSeen</code>, meaning that this should be the end time of the last check, not the start time. If this was the start time, then <code>lastSeen</code> would be the end time, and they would not be equal.</dd>
<dt><code>&lt;<dfn>ss:lastSeen</dfn>&gt;</code></dt>
<dd>The most recent time a check was successful, as a <a href="https://www.w3.org/TR/NOTE-datetime" target="_blank">W3C datetime</a>, a subset of ISO&nbsp;8601. When the <code>responding</code> element is set to <code>true</code>, this should be exactly equal to <code>lastChecked</code>. When it is <code>false</code>, the difference between <code>lastSeen</code> and <code>lastChecked</code> should give an estimate of how long the service was down for.</dd>
<dt><code>&lt;<dfn>ss:availability</dfn>&gt;</code></dt>
<dd>An integer representing the percentage of availability, between 0 and 100. How this availability is calculated is left up to the implementer and should be described by the <code>aboutStats</code> element.</dd>
<dt><code>&lt;<dfn>ss:averageResponseTime</dfn>&gt;</code></dt>
<dd>A decimal number representing the average response time of the service in seconds. How this availability is calculated is left up to the implementer and should be described by the <code>aboutStats</code> element.</dd>
<dt><code>&lt;<dfn>ss:statusMessage</dfn>&gt;</code></dt>
<dd>A message intended for human consumption giving further details about the service's status. This could for example warn of a planned outage, or give updates on how an ongoing issue is being worked on.</dd>
</dl>
]]></description>
<ss:responding>true</ss:responding>
<ss:lastChecked>2024-03-10T17:48:57+0100</ss:lastChecked>
<ss:lastSeen>2024-03-10T17:48:57+0100</ss:lastSeen>
<ss:availability>100</ss:availability>
<ss:averageResponseTime>0.42</ss:averageResponseTime>
<ss:statusMessage>If you can read this, then RSRSSS is definitely working.</ss:statusMessage>
</item>
<item>
<title>EnviroFlash</title>
<pubDate></pubDate>
<guid isPermaLink="false">enviroflash</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">Air quality</category>
<category domain="https://envs.net/~lucidiot/rsrsss/">CAP</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/enviroflash.opml</link>
<description><![CDATA[
<p>Because the United States is a combination of all the bad things about the European Union and the bad things about a single country, anything that involves the federal government is a mess. AirNow is a demonstration of that mess, as a partnership between the <abbr title="Environmental Protection Agency">EPA</abbr> and a whole lot of other entites that provide air quality information, which are such a mess they are just better described (and sometimes officially described) as <em>local partners</em>. They provide three different services:</p>
<ul>
<li><a href="https://mdaqmd.enviroflash.org/" target="_blank"><dfn>AirNow-Tech</dfn></a> is the platform where air quality data is sent, and where it can also be extracted, analyzed, used by partners (not just local partners).</li>
<li><a href="https://docs.airnowapi.org/" target="_blank"><dfn>AirNow API</dfn></a> provides APIs, data exports, etc. from AirNow-Tech. It requires a registration like AirNow-Tech, but this time anyone can register and get approved. The data exports are Atom feeds, but I am not including them since they are hidden behind that registration wall. To me, open data is not open if you have to register!</li>
<li><a href="https://www.enviroflash.info/" target="_blank"><dfn>EnviroFlash</dfn></a> provides e-mail notifications for current air quality conditions, forecasts, and warnings to the general public. They also serve RSS feeds, as well as Atom feeds including <abbr title="Common Alerting Protocol">CAP</abbr> messages.</li>
</ul>
<p>Since EnviroFlash is the only truly open website of the list, this will be the one I am featuring here. <a href="https://feeds.enviroflash.info/" target="_blank">The feeds page</a> provides <a href="https://feeds.enviroflash.info/cap/aggregate.xml" target="_blank">an Atom feed</a> that aggregates all of the <abbr title="Common Alerting Protocol">CAP</abbr> messages nationwide, and lets you select a state. Selecting a state and submitting the form triggers a script that uses <abbr title="Asynchronous JavaScript And XML">AJAX</abbr> to display a table of all the feeds available for that state.</p>
<p>Some states, like Alaska, have zero cities listed; in total, only 44 states have some feeds available. Each feed is specific to a city, and there are five different feeds for each city:</p>
<ul>
<li>The <a href="https://feeds.enviroflash.info/rss/forecast/264.xml" target="_blank">forecasted air quality</a> for today and tomorrow, as an RSS feed;</li>
<li><a href="https://feeds.enviroflash.info/rss/actionDay/264.xml" target="_blank">Health advisories</a>, also known as "action days", as an RSS feed;</li>
<li>The <a href="https://feeds.enviroflash.info/rss/realtime/264.xml" target="_blank">latest air quality information</a> for the area, as an RSS feed;</li>
<li>The <a href="https://feeds.enviroflash.info/cap/264.xml" target="_blank">current air quality alert</a>, as a single <abbr title="Common Alerting Protocol">CAP</abbr> alert;</li>
<li>An <a href="https://feeds.enviroflash.info/atom/264.xml" target="_blank">Atom feed for the current air quality alert</a>, with either a placeholder entry when there are no alerts, or an entry holding a <abbr title="Common Alerting Protocol">CAP</abbr> alert just like the above one.</li>
</ul>
<p>I wrote an XQuery script that lists all of the RSS and Atom feeds as well as the CAP alerts for all cities in all states, resulting in more than 3000 links, in <a href="https://envs.net/~lucidiot/rsrsss/opml/enviroflash.opml" target="_blank">one OPML file</a>. If you need to do some load testing on your feedreader, now you know what to use!</p>
<p>EnviroFlash has made me discover CAP, the Common Alerting Protocol, a standard that I will look into in more detail in the future and that is designed to make emergency alerts more interoperable. I have already started to look into other sources of CAP alerts to learn by example.</p>
]]></description>
</item>
<item>
<title>National Data Buoy Center</title>
<pubDate>Tue, 02 Apr 2024 12:02:04 +0200</pubDate>
<guid isPermaLink="false">noaa-ndbc</guid>
<category domain="https://envs.net/~lucidiot/rsrsss/">OPML</category>
<link>https://envs.net/~lucidiot/rsrsss/opml/noaa/ndbc.opml</link>
<description><![CDATA[
<p>Just like on airplanes, the computers on ships are unlikely to be as modern as what you would expect elsewhere, and they also need high reliability, a goal that is both at odds with most innovations in the tech industry and with changes in general. This is probably one of the reasons why websites that cater to seafarers, or try to provide some form of automation for ships, are so <em>good</em>.</p>
<p>Did you know that you can send FTP commands by e-mail to the <abbr title="National Oceanic and Atmospheric Administration">NOAA</abbr>'s Ocean Prediction Center to retrieve their data? You'll get an email back with whatever your FTP commands resulted in. There are other similar e-mail based services, because e-mail happens to be quite resilient and lightweight, so it's a great thing to send over satellite. Here's <a href="https://tgftp.nws.noaa.gov/fax/robots.txt" target="_blank">a text file</a> describing a few services, including the <abbr title="Ocean Prediction Center">OPC</abbr>'s own.</p>
<p>Another of those cool services is the National Data Buoy Center, or NDBC for short. There are over a thousand buoys all over the oceans, both near the coasts and really far away from them, that send back weather or tsunami reports to various agencies, and the NDBC aggregates data from its own buoys and those of its international partners, as well as reports sent by ships. It provides the reports in various formats; text files, <abbr title="JavaScript Object Notation">JSON</abbr>, <abbr title="Keyhole Markup Language">KML</abbr>, etc., but most importantly of course, RSS.</p>
<p>I <a href="https://tildegit.org/lucidiot/rsrsss/src/commit/a2ed54a98efe2235326a725f0222a493598a9020/xquery/opml/noaa/ndbc.xqy" target="_blank">slapped some XQuery</a> onto those RSS feeds to create yet another excessively large OPML file with over eight hundred feeds. You can get one feed for each buoy, but I found a way to get a feed of every observation at once.</p>
<p>From <a href="https://www.ndbc.noaa.gov/station_page.php?station=61001" target="_blank">any station's page</a>, you can find a link to all the observations in the area, either as <a href="https://www.ndbc.noaa.gov/radial_search.php?lat1=43.400N&lon1=7.800E&uom=E&dist=250">a webpage</a> or <a href="https://www.ndbc.noaa.gov/rss/ndbc_obs_search.php?lat=43.400N&lon=7.800E" target="_blank">an RSS feed</a>.</p>
<p>I found that the RSS feed version lets you change the default radius of 100 nautical miles to any other value using the <code>&radius=</code> URL parameter followed by a number of miles. The maximum range is 10820 nautical miles, corresponding to half of the Earth's circumference. Since this is a radius, this means you can indeed select everything!</p>
<p>Also note that this magical <em>everything</em> feed includes observations from ships, not just buoys, just so you can some extra spam.</p>
<p>I don't know that much about the maritime industry, but from my understanding from reading accident reports and other weird technical documents, large ships pay to get weather reports tailed to their needs from private companies, and smol ships rely on the weather information of the local coast guard, broadcasted regularly over radio. I don't know if any of those feeds are used by anyone, or what they would be used for, but boy am I glad that that's a thing! There is something really cool about getting RSS items that come from random chunks of metal floating around the oceans.</p>
]]></description>
</item>
</channel>
<access:restriction relationship="allow" />
</rss>