meta: about this site
Right from the start of this project, I really enjoyed that it is never "finished". I just keep adding to it bit by bit, and that really removes a lot of stess from the process. And already, this site accumulated quite a history, and there is so much more planned1!
quick facts
- The site is compiled into simple HTML & CSS.
- Some places contain some very ugly (on purpose) JavaScript, but I tried to limit it to pages, that depend on it.
- I use a basic VSP to host everything, and can't be really picky, who I'm currently hosting with, sadly.
The backend is written in Node.js with TypeScript, and it contains a small static website generator called gemo, as well as some simple API for things like chess. Gemo uses an extended gemtext format (.gmi or .gmo in my case), that is compiled into versions for gemini and http using a pretty powerful template system. In some places it relies a lot on running javascript on page compilation, and some pages are never saved to a static file, but instead are compiled each time they are requested (for example, the home page), to allow for dynamic page content.
Here is the source for /p/ page:
{
title: 'thoughts',
description: 'all posts'
}
# thoughts
=> /p/factory-must-grow/ the factory must grow, and you don't matter
... etc
You can also see it, if you download the page with curl.
At the top there is a JS object, that contains some settings for the page, like should it be dynamically rendered and it's metadata.
A big inspiration for gemo was seapunk's 7redsuns2.
I've also listed libraries and assets used on the credits page3.
And as I've mentioned, this site also supports gemini4. Most pages are there, execept for ones that depend on JavaScript to run (so mostly async chess).
site history
I work as a developer, and I've used a lot of web development tools. But when building this website, I decided, that in spirit of indie web, it must be kept as simple as possible. It was truly refreshing to write in raw HTML for the first time in a very very long time. But I still wanted to have some interactive functionally on the website, while keeping it server-rendered. So for the first version of this website, I've turned to my old enemy... PHP.
My contempt for PHP was and still is enormous, and somewhat of a meme between my friends. Yet, it looked like the simplest and most basic solution for my needs, that neatly fits into pure HTML mindset I was building this website with. PHP served me nicely, when the site contained just a few pages. But as it grew, the website source code quickly desolved into madness. Also, I wanted to support gemini, so I've started working on a rewrite. I've launched the first version of this site in July 2024, and only in late October of that year I finally migrated to gemo. But the effort was worth it, gemo is really powerful and I enjoy using it.