Musings on My Website Launch

(Or, More Accurately, Mewsings)

I launched my new personal website yesterday. Today I'm launching the newest version of my blog. I wanted to write about some of the specific technological decisions that went into making the site!

The Tech Stack, Or Lack Thereof

I started learning PHP over 13 years ago. My initial vision for my personal website was a cool dynamic site with a whole fancy roleplaying neopets-esque game section all powered by PHP and MySQL. That never happened. But still, as the web was growing more dynamic, I continued to make web pages dynamically powered by PHP. In my usual Not Invented Here style of my personal projects, I made my own templating engines and fancy experimental frameworks to power the web pages I made.

Of course, now I'm a professional software engineer working with web technologies every day. And I still love it! Maybe PHP is a bit... crufty compared to more modern fancy languages, but I still like working on complex, feature-rich web apps... for work! But it's a bit exhausting to work on that kind of stuff all day and then attempt to work on my personal website and feel like I'm still at work.

For this website, I'm relying on a lack of tech stack, for the most part. While the server at mew151.net is still a standard LAMP stack, I'm mostly going to stick to static HTML, CSS, and JavaScript. Though on said server, I will be using .htaccess to do some cleanup work, like re-routing the old blog post URLs to their new homes and allowing the Neocities Mirror to fetch my twtxt feed.

Because I'm running on such a simple stack, it means that my site can be mirrored easily... like on Neocities! But I'll talk about that more later.

On Site Generators

I'm currently not using any kind of static site generators for this site at all. This again comes from my desire to keep things simple, and just... write HTML. Running a static site generator sounds convenient, but it just doesn't really mesh well with the philosophy of this site. To me it almost feels like I'm using a dynamic back end, but just pre-rendering the HTML so I can upload it onto a static server. Since I wanted to not use any back-end technologies while working on this site, I have included static site generators into that as well.

Also, I personally associate static site generators with Github Pages blogs. I want to specify that there's nothing wrong with static site generators or Github Pages blogs, but they don't really match the vibe I'm going for with this site. This site is not a professional website to market myself as a developer. It is a personal place where I can be myself, and I want that to come through in both the user interface and developer experience as well.

That being said, I'm not totally against the idea of using Sass or Some Kind of JavaScript Compiler Thing to help working on this site in the future. Right now the JavaScript I do write is just plain JS that I'm writing in modern style. I think it might be useful to compile that to more "compatible" JS? Maybe?

I'm also using some static generator utility things. Specifically, right now I'm using a custom utility I made to generate my site's RSS feed automatically whenever I deploy. Speaking of which...

Everyone Should Use RSS

One of the main benefits social media sites provide us with is the ability to follow or subscribe or cyberstalk other users and see their updates on the main app's feed. That is just... really convenient, and unfortunately that is also what has killed the more generic feed technology, RSS.

My dream for the web is for everything to be just a little bit more decentralized. And because I have to explicitly say this nowadays, when I say decentralized I am specifically NOT referring to blockchain or any related technology. Fuck crypto. Um... anyway, I want more people to have their own tiny little websites where they post their own blogs or articles or selfies or whatever instead of being stuck on just 5 websites.

The problem with this kind of decentralization is that it becomes really hard to follow people in the standard social media sense. You just kind of have to bookmark the sites you like, and then remember to occasionally check back in on the sites and see if there's anything new. Hopefully the site has some kind of updates section or changelog.

In terms of user experience... this kind of sucks? Maybe in 1999 it was fine, but these days we can't just ignore how social media sites and apps have shaped user experience. If only there was some kind of standard that represented a generic feed you could follow and you could put it on your website so people could follow that feed whenever your site updated. Oh yeah, it's RSS. Use RSS.

Unfortunately, writing RSS is kind of painful? With HTML, browsers are very forgiving about loose and incorrect syntax, since it's basically been designed to be written by hand by humans. XML (which RSS is a dialect of) on the other hand, is much stricter, despite the fact that HTML looks like a subset of XML. So writing an RSS feed from hand can be a hassle and you're often prone to error.

So I've built a utility I've christened Feedmake to generate an RSS feed automatically as part of my website's deployment process. Since I'm keeping my website in a Git repo, I'm already keeping track of the changes of my website through my commits. So I thought... why not just use my site's Git history to generate my site's RSS feed? If you're in a similar situation where you're keeping your static site in a Git repo, feel free to try out my utility. :)

Or, at the very least, start using a Feed Reader and subscribe to more websites via RSS!

Reducing Redundancy With Scripting

While I said earlier that I didn't want to use too many site generator-y things to make my website, I did have to do something about redundancy. The entire point of generating my RSS feed from my Git history was to take advantage of the fact that I'd already be documenting my site's history through Git anyways and it'd be redundant to store that in both git history and RSS at the same time. But what about the updates section on my website's homepage?

Well... I use Javascript to fetch my site's RSS feed and paste its contents onto the homepage! That way there's only one source of truth for my site's updates. That sure is convenient for me!

I've done this in a few other places for my site as well. You can see on the journal section of my site that it is actually "powered" by a utility called twtxt that you can follow it on. That way I have the fun of a decentralized twitter feed without also having to write some new HTML and redeploy my site every single time I want to tweet out one single thing. I think this usage of dynamic content is fine here since Javascript is just fetching a static text file on my server and parsing it.

That being said, I know some people browse the web with Javascript blocked or disabled. I've included links to the main sources of truth for those who don't want Javascript to fetch it for them, in the hopes that my site can actually be usable without Javascript (a rare sight these days).

Why am I mirroring my site on Neocities?

While I have my own domain and a pretty great web host already, I still kind of like the idea of having a Neocities site too, for proper retro web aesthetic. But that wasn't really the reason why I created the mirror.

One nice thing about Neocities is that you can follow users on the site and be notified when their site actually updates. Since I'm a fan of a bunch of small Neocities websits, I knew I had to create an account so I could actually follow people (of course, I wouldn't have to use this if we all used RSS!). But creating an account would also lets people follow my site (even without RSS!), which is nice!

What really sold me on Neocities is Neonaut's Page on Cyber Mauseoleums, specifically the note on neocities as a web host. Let's face it, one day, the domain mew151.net and this entire website will go down. I hope that this site can stay up for a long time, even after I'm gone, and hosting a mirror on a site like Neocities seems like a good way to preserve my digital legacy.

So that's why I have a Neocities mirror. lol.