-- Leo's gemini proxy

-- Connecting to nytpu.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=en-US;charset=utf-8

↩ go back to index


discovering and browsing on geminispace

january 5, 2021


*EDIT:*

At some point I merged GMI Feed Aggregatorᵇ and gmisubᵝ in my head (I guess because they both aggregate feeds and they both use the abbreviation “gmi”?). I've rectified this in paragraphs 2 and 3 in “feeds.”



I want to share my current setup (that I've totally been using for a long time and didn’t just get set up a few days ago) for browsing geminispace. Hopefully it’ll be helpful for people looking to enhance their experience or aggregate their own customized feeds.



feeds


Getting my feeds setup was a lot of experimentation with various pieces of software and hoping I don’t end up having to roll my own. The main thing I was looking for was to be able to aggregate atom, RSS, and gemini feedsᵃ, to ensure that I can subscribe to the maximum number of sites without workarounds or having to manually visit all of the sites I can’t subscribe too. Luckily, the gemini feed format seems to be followed on almost all gemlogs and a very surprising number of phlogs, since gemini feeds were designed to match the most common format for gemlog indexes. All of the remainder that I’ve encountered had atom or RSS feeds, so having a setup that does everything I want should have near-100% coverage.


I first decided to look at GMI Feed Aggregatorᵇ because I liked the ease of use of just running make, mirroring the same workflow that my gemlog toolᶜ has, and is easy to fire in a cron job or something. It can only subscribe to gemini feeds though, and isn’t easily extensible to something as complicated as XML since it’s a raw makefile with simple awk scripts.


I then decided to look at gmisubᵝ because I remember seeing it announced on the mailing list. It can only subscribe to gemini feeds though, and I decided to not use it for similar reasons for GMI Feed Aggregator. Implementing atom feeds for it would be a hack job, so it would probably be easier to just start from scratch myself.


I saw Alex Schroeder’s postᵈ on his feed aggregator Moku Ponaᵉ which intrigued me. It can subscribe to page changess, gemini feeds, atom feeds, and rss feeds, on both gopher and gemini, supporting seemingly everything! The thing is, I just don’t like page change detection, it makes it really annoying to browse because every entry requires two clicks and just ugh, I don’t like it. Just doesn’t gel with how I wanted my setup to work, but I left it on the docket in case I couldn’t find anything else.



I decided to look at Lagrange’sᶠ built-in feeds, even though I had dismissed it when it was first introduced because it only supports gemini feeds. However, after some experimentation, I discovered that it can subscribe to pages preprocessed with its MIME hooks, so I just write a hook to convert atom/rss to a gemini feed and I can subscribe to anything! This is what I’m currently using, and it’s been working great so far.


It turns out I didn’t even need to write my own atom parser, I just ripped off the atom to gemini script provided in Lagrange’s helpᵍ, I didn’t bother updating it to be more robust, I look at all the feeds and test the script before subscribing anyways, it’s not like I’m dealing with truly arbitrary inputs. View it broken out into its own script here: [h]. It turns out there’s a few subtle differences between atom and RSS feeds (which makes sense) so I had to modify it a bit for rss feeds: [i]. I finally had to get Lagrange to actually process feeds using these scripts, which was more challenging than I thought it would be. It turns out that seemingly no one provides the correct mime types of “application/atom+xml”ʲ and “application/rss+xml”ᵏ (including me apparently!ˡ) and instead use everything from just “application/xml” to “text/rss” so I had to write some weird regular expressions to properly match everything. See my mimehooks.txt configuration in [m].


[α]: Wow this is a lot of links, isn't it!

[a]: gemini subscription format companion specification

[b]: a very simple feed aggregator, i think the first tool to support gemini feeds.

[β]: gmisub was the second tool to subscribe to gemini feeds

[c]: gemlog.sh — utility for managing gemlogs and atom feeds without needing a cgi script.

[d]: alex schroeder’s diary — my feed aggregators

[e]: moku pona was very promising, but just didn’t quite fit into what i was looking for

[f]: lagrange — a gui client for browsing geminispace with a ton of features, pretty buggy though (at least on my system)

[g]: atom to gemini feed script provided in lagrange’s help page

[h]: (2.3kib) atom2gemini.py

[i]: (2.4kib) rss2gemini.py

[j]: wikipedia — atom mime type: application/atom+xml

[k]: wikipedia — rss mime type: application/rss+xml (registration not finished)

[l]: (13.4kib) bad-mime.png sounds like a horrible mime porno, but don’t be fooled, it’s just a terminal screenshot

[m]: (224b) replace the /home/alex/bin/[whatever] with paths to your {atom,rss}2gemini.py scripts and plop it in ~/.config/lagrange/mimehooks.txt



finding content


Now that I have a feed aggregator set up, now I have to actually find content to aggregate! I started by going and just subscribing to all the most recently active logs on CAPCOMᵒ that I knew I liked. I then went through my existing bookmarks and some of my browsing history to find posts and capsules I've read before, subscribing happily along the way. A lot of people were nice enough to post stuff they like on their capsule's homepage, so I gathered more from there. I went through LEOʳ, but it's been so long since GUS has been updated that there's lots of pages (including mine) that aren't detected as being part of it yet. I'm planning on going through all of the feeds known by CAPCOM & Spacewalk and the listings on dctrud's gemini directoryᵖ and subscribing to more that I like, but I have to find the time.


As help for others looking to create their own personal feed, I'm maintaining a semi–up-to-dateˢ list of my bookmarks on my homepage here: [t]. If your gemlog isn't listed there, it's no fault of yours, I probably just missed it! I guess you could email meᵘ if you think I'd be /really/ interested, but otherwise I'll probably end up stumbling across it as long as you update it semi-regularly. If everyone would post their favorite authors like I do, then it would be really helpful for growing and making it easier to explore the gemini community, wouldn't it :)


[o]: capcom geminispace aggregator — you should probably already know about this. how'd you find my gemlog without seeing it pop up on capcom?

[p]: random road gemini directory

[r]: leo is an orbit, a term used here to mean "a webring but for gemini instead of the web". the name is both a play on low earth orbit, as well as the constellation leo, the lion.

[s]: they're up-to-date as of posting this at least

[t]: my bookmarks and subscriptions, exported from lagrange

[u]: alex@nytpu.com




↩ go back to index


also available on the web


contact via email: alex [at] nytpu.com

or through anywhere else I'm at


backlinks


-- Copyright © 2021 nytpu - CC BY-SA 4.0


-- Response ended

-- Page fetched on Fri Apr 19 18:54:10 2024