Skep’s Place

 

I did the RSS thing


Hey, that site I mentioned making in my last post to compile a list of RSS feeds hosted by Neocities users? I made it, and you can even view it. Now I’m going to talk about it a bunch.


Future-proofing with JSON

One of the things I’ve started doing with the home page of Skep’s Place—really, something that Eleventy allows me to do—is keeping a simple JSON file with the sole responsibility of holding the data that I regularly update in all those little boxes. Thoughts, Updates, Currently Listening/Playing, etc. If I want to update the works, I don’t have to find each spot in the HTML; I just update the JSON file. When I rebuild the site with Eleventy, shortcodes pull in the relevant data, apply the proper HTML, and slap it in the right places; then the output file is ready to go. It’s probably a little overkill, but it makes updating that much less of a hassle and helps keep me from forgetting anything.

I mention this because this is, essentially, how the RSS list is constructed. The index.html page I work from doesn’t have a bunch of lines of HTML; it has a single shortcode called “getLinks”. I also have a JSON file that stores details about each site, such as its name and URL. When I rebuild the site, getLinks uses Javascript to pull in this JSON file and loop through each site entry, extracting the data and adding the relevant HTML, and eventually returns the whole big mess back to the index page, which is what gets uploaded (and is what you see).

Yes, I could skip this process and manage each line of the HTML myself. A couple reasons not to, though:

However, I also wanted to be able to sort the list, and did this lead me down a small rabbit hole.


Sorting out sorting

I wanted to put the list in alphabetical order. Or, to be more precise, I wanted the list to be in alphabetical order, without me needing to do the ordering myself.

“I’m sure Javascript has a way to do that for me,” I thought. I was… half-right.

Javascript does have a .sort() function I could use to sort items in an array (AKA, my list of website names). By default, it takes two items, compares their first letters, and whichever has the smaller Unicode number is placed first.

In practice, this is absolutely useless for sorting through a list of fun, creative website names. Because of the way Unicode works, all capital letters would be placed before all lower-case letters. The easy solution was to just compare versions of the site names that had been converted to lower-case, and it didn’t take me long to work that out, but it’s the principle of the thing.

But since I was futzing around with the sorting function anyway, I also added some code to exclude any “A” or “The” at the beginning of a website name from counting towards how it’s alphabetized. This was actually so easy to do that I’m now pissed off at every music streaming service that alphabetizes all “The ____” artists together (which is all of them). But I’m also mad at Javascript for not having a better baked-in sorting function.


Let’s get flexible

I posted a comment on Neocities hinting at this a few days ago, but I’m pretty sure I’m overusing nested Flexboxes in the design and I refuse to apologize for it.


Now I’m learning new software for this project?

I wasn’t going to do any sort of logo imagery on the page at first. Then I thought the RSS icon could add some visual interest. Then I realized that adding the Neocities logo next to it could be cute (and thankfully, Neocities seems to be perfectly fine with anybody doing anything with their logo). To be completely honest, the Neocities logo actually ended up inspiring the design of the links, with the black-white border and shadow effect.

I wanted to apply the border and shadow effect to the RSS icon, too, to give everything a cohesive look. It was easy enough to import the .svg files into Gimp (which I’ve been using exclusively for nearly two decades at this point), make the changes, and save the result as a .png.

And then… somebody asked me to make a site button. That’s when I started kicking myself for not doing the logo as a vector despite both of the input files being .svgs, because if I had done a vector logo, resizing it to that small size would be a lot easier. So I decided to remake the logo after a grand total of about 20 hours. Of course, Gimp doesn’t actually work with vector images, so I would need to use an application called Inkscape. And boy, it sure isn’t Gimp.

It took a morning of trial and error, because Inkscape uses an entirely different design language. But I at least figured out how to add borders and a passable shadow effect to the RSS icon to match the Neocities logo, and now I have a nice .svg that is nearly indistinguishable from the original .png I did. I like it! And I hope I never have to use Inkscape again.


...Nearly forgot this is the Internet

A realization that occurred fairly late in the process: some part of me is aware that Neocities allows sites containing content intended for adult audiences, and it would not be inconceivable that such sites may maintain an RSS feed and may wish to be included in the list. In running the RSS List, I’m not really interested in acting as a censor or being choosy about who gets to be added (although if I find out you’re making or promoting any sort of hate speech, I am dumping your ass), but at the same time, I feel like implementing some kind of barrier—even an insignificant one—that requires a user to opt into viewing this content would not go unappreciated.

I almost decided to not mention anything and wait to see if the issue would ever come up, at which point I could then implement a ruling; but that seemed unfair to whoever might be the first person to unknowingly hit that wall, because clearly I had expectations and just didn’t voice them, and that kind of makes me the asshole.

So, I included the policy that’s currently on the Join page. I won’t say it’s perfect, and if you have opinions on it I am happy to hear them, but for not knowing what the hell I’m doing I feel like it is at least a reasonable compromise for this project that is just supposed to be a fun, community-oriented thing.


People seem to like it!

The feedback so far has been really positive! RSS seems like one of those technologies where the people who use it really make it an integral part of how they interact with the web, and they might collect feeds simply to have more feeds to read (I am guilty of this). In my opinion, sites on the small web—especially those that are hand-crafted—greatly benefit from implementing feeds, due to their predilection toward creativity in design and routine tinkering. It can be difficult to know when somebody adds new content to their site or where they place it, and having a good feed can solve both of these complexities.

I’m very delighted to see so much interest right out of the gate; for a little bit there, I was adding a new round of sites to the list a couple of times a day. And I’ve already heard from a handful of wonderful folks who want to contribute resources they’ve already made, or who are interested in helping me make new ones. I don’t know why I’m surprised by this given how readily you all jumped in to make the Virtual Potluck happen last year, but I will never not be overwhelmingly appreciative whenever somebody donates their time to one of my daft schemes.

Looking at the list of stuff I still want to do to make the RSS List truly shine is daunting, to say the least. But damn if y’all aren’t worth it.

Site Options

Colors

Dark mode

Off

Radioactive mode

Off

Fonts

OpenDyslexic

Off

Requires cookies. Read more