JORDAN.YELLOZ.me

After some length of non-productive time, I decided to resume development of the software running this site. Since it was missing the Attachments feature of the previous software I was running, I finished implementing enough of that part in order for Attachments to be enumerable and downloadable. Also, I added the ability to have “single” or “static” pages that aren’t indexed by date.

I performed an informal audit on the licenses of the software this application requires and it looked like Dulwich’s GPLv2 is the most restrictive so I licensed the software under that license and released it publicly.

gitpages on GitHub.

Attachments

This was kind of more difficult than I had imagined because it involved many changes to the Whoosh index schema because I don’t really know how to use that software too well. I like the idea of nested queries and decided to go with them previously for handling the hierarchy of pages and page revisions for this site.

Now they are used to handle a more complicated, three-level hierarchy where the second (middle) level can actually have two kinds of documents: Page Attachments and Page Revisions. The third level only contains the Attachments inside a Page Revision (Revision Attachments) and the highest level obviously contains only Pages. After lots of trouble I decided to use an entirely orthogonal set of fields (other than the level-determining ‘kind’ field) for different types of documents and that eventually got me where I am now which is something that arguably works without too many searches. Unfortunately I have to use external filtering of the seaerch results in some cases for reasons that I don’t understand.

Single Pages

I also added a relatively minor feature which has somehow been in developent for about 1 year. This is quite simple and didn’t need any real work. In addition to the standard weblog-style date-slug URLs a page can also have a custom URL which must be configured inside the Flask application for each of these in order to avoid any software design concerns. All that a user needs to do is write a page with a non-public publication status and register a special view pointing to that page’s path inside the git object store. That page will render without any chronological navigation controls and with a link to the new canonical address. As an example, I have published my GPG public key on this site in a special page (inline and as an attachment).

Posted on

Revisions: