I'm leaving...
Published 2019-04-02
...except unlike as I teased in yesterday's April Fool's joke, I'm not moving to Gopher. What I am doing, however, is moving away from Neocities to my own web server, hosted at invisibleup.com. That's right! I have my very own dot com now! ...but why?
Leaving Neocities wasn't an easy decision for me. It's a fantastic platform, for people whose needs fit Neocities' features. It's a very friendly and approachable first taste into having your own very customized personal web space. There's a nice tutorial on HTML for those just getting started. But beyond that, there's a lot of potential in just HTML, JS, and CSS as pages like Kirby's Dream Site or rose knight or Empty Halls show off.
However, by far the biggest thing still keeping me anchored to Neocities was the social media aspect of the site. It fosters a community where people get constant exposure to other's site, leading to a much more enjoyable experience than throwing HTML into the void. If Neocities were just another web host, I wouldn't have been featured on Hacker News. Twice. I wouldn't have found some amazing content creators that I follow. I wouldn't have met some wonderful people that I still enjoy chatting with today.
I cannot stress how great of a platform Neocities is, and how proud I am to have hosted my site on it. However, here's where the honeymoon ends. By and large, I've outgrown Neocities. It's great, but it's not enough. I need more from a web host. Specifically, here's some things that the new invisibleup.com server provides that Neocities, by design, can't.
Templates and Page Management
I'd love Neocities a thousand times more if there was native support for something like Jekyll or Hugo templates or even old-timey server-side includes. But I might be in the minority here. Templated websites like mine, where very page has a very uniform format, is the antithesis of Neocities. Neocities feels like a place for the looser, more freeform sites like those of the past. Where every page was different, where visiting someone's homepage felt like visiting someone's home, everything charmingly arranged just so. I love that sort of stuff... but it's not what I want to do on my own homepage. What I want to do on the net is to provide good content, good reference and tools, without the design of the site getting in the way. That isn't the Neocities vibe, and I respect that, but it does cause friction.
As a result of Neocities not supporting templates, I have to create every single page by hand, copying from a standard template file and filling that in. This leads to issues when the template file gets out of date. The redesign I made about a year ago was especially painful, as I had to go to every single page on the site and edit the header to include the new sections I added. If I realized I wanted to re-order, or change links like `about.html` to `about/index.html`, I had to redo everything. Likewise, every time I added an article I'd have to edit both `articles/index.html` and `index.html` to reflect the newest thing on the site. All of this was very error-prone. I frequently uploaded articles using a template that was a few versions out of date by accident and I'd have to patch that up.
Yes, I could have installed a templating system on my own computer, used that to generate the HTML files, and just copy it all over, but if I had hot-patched something on the site to fix an error that change would have been lost when I re-exported the HTML files. Also, "and just copy it all over" isn't easy because besides WebDAV (which I've had trouble getting to work on Windows) and the Neocities CLI (which I'd rather not mess with), there's not an easy way to copy files over via SFTP or anything like that.
My new server instead is a Flask application. A little overkill, maybe, but I want to be flexible in case I want to have some fun with server side scripting some day. My Flask application reads a list of pages from a TOML file, with dates and categories and titles. With this it automatically generates all of the navigation and the articles index using a template. All I need to do to make a new post is upload the post file (which can be in HTML or Markdown, which is much easier to work with for posts that are largely just text and a few images) and add an entry to the TOML file. If I want to add a new section to the site, I just edit the TOML file. It's really nice.
On that note, instead of dragging and dropping pages via the Neocities website, I instead use git. I commit my changes to a repo, push it to my server, and (if I had it set up right, which right now I don't) it would automatically reload the web server and then it would start serving the new pages. Much less work!
Also, with it being a Flask server I can do some fancy stuff. The Gopher server (which I'm keeping up, btw) was just a way to show off the prowess of my new server, really. (Also, seriously, Gopher is COOL. Have you seen some of those phlogs? I love reading those!) It uses an extension called Flask-Gopher that (with a bit of legwork on my part to make sure the header and the formatting displays properly) serves a Flask site over Gopher. If I can do that, I can do anything. (jevil laugh intensifies)
Self-hosted apps
The site itself isn't worth quitting Neocities over. Sure, my new system is great, but I can work with Neocities. But having my own little Linux box that I have ssh access to opens up... well, everything. On my domain I've registered a subdomain, apps.invisibleup.com. (I also password-protected it, so don't bother going there.) On it, I'm in the process of setting up a few applications.
One of them that's already running is an IRC client, The Lounge. It's a Discord-like IRC client that saves all the messages that come in a server, so I can hop in and know where the discussion's going. Just FYI, I'm very new to IRC, so I'd love some recs for IRC servers. (Or Discord servers, for that matter.)
Another one I have is awstats, an analytics script. It's a perl script that I have set to run every hour and generate detailed reports of which pages are visited, what countries view my site, what browsers people use, etc. Neocities has statistics reporting, as you can see here, but it's just a view count. I can't really do a lot with that. I've also resisted putting something like Google Analytics up, because Google does not need more data. I figure this is a really happy medium that most people will be okay with.
Some more I want to set up are an RSS reader (because after Google Reader died and then TheOldReader tried to shut down I pretty much stopped reading webcomics, and I'd like to get back into that), a calendar, file storage (I don't have a lot of room, though, and I'd have to make sure it's encrypted), Firefox Sync, some sort of notetaking app like Google Keep, maybe a todo thing... Again, I can run literally anything.
So what now?
I don't quite want to pull the plug, as a lot of stuff links to my Neocities site. Here's the current migration path.
- Finish up the new server. I still want to add RSS feeds and polish up the 404 page, at minimum. I also have one more article I want to push out before I switch over.
- Replace every HTML file on the site except the index page with a meta redirect to it's location on the new site. This will keep all the old links functional.
- Replace the index page with a big "we've moved!" banner. Include a thumbnail to the latest post I've made on the new site. Update that thumbnail every time I make an update. This will keep any Neocities subscribers in the loop.
Again, Neocities was a wonderful place. But I have to go now. So long, and thanks for all the fish.