A Whole New World
As of a couple days ago, this site is not longer being hosted from my custom CMS server [1]. It's served me well till now, but all good things must end. May it rest in peace.
From the very beginning this site has been a way for me to publish articles. Whether they were called "thoughts" or "blog posts" or just "posts" changed over time, but the impetus was always the same: to talk about what I was thinking about or working on at that point in time. Each post is a snapshot, not to be updated, and therefore quickly obsoleted.
I've been thinking a lot about this. This kind of model, where I produce a feed of content for others to consume piece-meal, is the dominant model on the internet. And for some things it does work well. Looking through my previous work there's quite a bit which _was_ interesting, but no longer is. Hell, this post you're reading now will probably end up in that bucket sooner than later. And that's ok! Something being ephemeral doesn't make it pointless.
But there are other things I want to do with this site which don't lend themselves to this model. I want to construct my ideas into a bigger work, to curate and adjust them over time as I refine and battletest them. Rather than writing one-off posts about how to annotate errors properly, or how to structure a codebase, I could maintain a "How to Program Good" kind of document. I could maintain a list of links to other capsules and an introduction document to gemini as a whole. I could maintain a catalog of music I own, or artwork I've made, or woodworking projects I've embarked on. This site can become a place worth exploring, searching, or referencing, not just a long list of disconnected thoughts.
With this dream in mind I have, once again, completely overhauled this site. And this post (ahem) is about that.
-----
In the olden days I was using Jekyll to render my posts, written in markdown, into HTML files which would be served over HTTP(s). Over time my site became more and more gemini focused, such that most recently the content I was serving over HTTP was really just the gemini capsule rendered as HTML.
The beauty of gemtext, unlike HTML, is that you really don't need a templating system to work with it. You can just open a file and write it. Sure, there may be a line here or there that gets copied around (see my "Back to All Posts" link at the top), but you don't have to worry about header tags and CSS and meta attributes and all that. What you see is what was written, it's all just text.
Given that, my site is now just... a directory full of files. There's no CMS managing posts. There's no scripts building or translating files. Hell, there's not even a git repository. My gemini server is pointed to this directory, and if there's a file there it serves it.
On the HTTP side there is, of course, a _tiny_ bit of templating. I'm working with gemtext files afterall, not HTML. But the gemtext->HTML translation is done on the fly by my webserver itself [2], which is also looking directly at this directory. So the behavior ends up being the same. I change a file, I hit save, the changes show up on both gemini and HTTP. That's it.
There's some small annoyances to this new system. Pages like my "All Posts" page [3] were previously dynamically rendered by reading out the available posts from SQLite and generating the page from a template. Now it is managed manually. If I add a post, I need to add it to that page. Same with the RSS/Atom feed file, which is possibly the bigger annoyance.
But these minor things are completely dwarfed by the greater freedom to use this site in any way that comes to mind. My goal is to write less "posts" anyway, so all the better if there's less friction to doing so. In exchange I can change the entire structure of the site at a whim, all without dealing with request routing, templating, build processes, deployments, and all the rest.
-----
Before going and completely revamping the entire site, I wanted to first ensure that the "old" site still functions like it always did. Better to have something outdated but functional than to have something new and broken. Which leads me to this post here. Just a normal post in a long list of them, but now I get to add it to the /posts/index.gmi file manually. And /feed.xml.
I may still write the occasional post, but most of them will be something fun, or topical, or completely frivolous. Mostly what I'll be publishing in my post feed will probably (hopefully) be changelogs. I'll keep track of changes I'm making around the site in a file and once this file reaches critical mass I'll publish it as a changelog. Anyone who is interested in one part of this site or another can check the changelog to see if there's anything that catches their eye.
That's the plan for now, anyway. These things change quickly, especially when the rubber hits the road. But I'm excited, more excited than I've been in a long time. I'm excited to be doing something new on the internet which isn't, technically, coding. I'll be trying some new things and sticking my neck out a bit. It's gonna be a good time.
[1] mediocre-blog, pour one out
[2] I talked about how to accomplish this in a previous post
-----
Published 2024-08-01
This site is a mirror of my gemini capsule. The equivalent gemini page can be found here, and you can learn more about gemini at my 🚀 What is Gemini? page.
Hi! I'm available for remote contract work. You can learn more about me and my skillset by browsing around this site, head over to my resume to find my actual work history, and shoot me an email when you're ready to get in touch.