A quine is a computer program that which takes no input and produces a copy of its own source code as its only output. This page is a description of how the webpage was built and is used as a proof-of-concept to demonstrate how the different parts are connected. This allows me to upload and publish while continuing to piece together the infrastructure.
The purpose of this webpage is to have a repository for all of the important data in my life, with the expectation that it's going to be extensible and easily updatable as new information comes up and as I am comfortable with it.
This website is driven off of custom code that I wrote after being inspired by Jeff Kaufman. I read his scripts and then wrote my own to achieve a similar, but slightly different, goal. The web design, at least at the beginning, is almost a direct copy of his.
Originally I had planned to use GNU Recutils for the database backend, but it turned out that while the idea of Recutils is excellent, some of the functionality is under-baked and there is a lot of tooling required for using it in Python.
I actually spent significant time writing a Python backend, along with some hacks on the main Recutils code base. This was the absolute definition of yak shaving, however, an kept me from actually getting the website done. Since I do not have unlimited time, I decided to use SQLite for database storage and state management.
Originally I was going to do this strictly off of the Git history, but that also led to significant yak shaving. Managing state and state transitions is now done completely through the database.
Any human generated text on this website is generated in Emacs, in Olivetti mode. I will write a post on how this is set up at a later time.
Vim and Emacs are both text editors, with the main distinction between the two being that Vim is a specialized text editor focused on code editing, while Emacs is a general-purpose text editor that's essentially its own programmable LISP machine.
Things like focused mode, inserting graphics and formulas, etc. are first-class citizens in Emacs while they are very difficult, if not impossible, to use in a terminal-based Vim installation.
As this blog is mainly written text, I've found it much easier to separate concerns and use Emacs for writing while keeping Vim for programming.