Every page on the site is generated as static HTML and CSS using an engine custom built in python, and then fetched by your web browser as-built with one fast page fetch.
Static, pre-built web pages ensure the web server's response is as fast as possible while at the same time loading the web server's processing power as lightly as possible. This approach also puts less computing load on the web browser you're using to view the website's pages.
Within python itself, the database is maintained using sqlite, facilitated by a custom wrapper that makes such things (much) easier. Because the site is generated to static web pages and absolutely no visitor interaction with the database occurs, the database is secure by default. So Little Bobby Tables can use the site without anyone having to call his mother.
The timelines are a custom, copyrighted system. The software that generates the timelines is also built in python.
The main website is built using wtfm, a custom documentation system. At this point, you're not likely to be surprised to learn that wtfm is also built in python.
Text styling and other controls are managed with aa_macro, an extensive macro language that itself is written in... well, of course — python!
The entire site complex, from the webpages to the database and the various software engines, is automatically and securely backed up in multiple locations with every update to ensure its long-term integrity in the face of hardware failure and related issues.
Between wtfm, the timeline generator, the tree diagram generator, the genealogy generator, the database engine wrapper, the aa_macro language, and all of the relevant data in the underlying databases, this represents my work output over many years.
Leveraging the strengths of the python language and sqlite, I wrote all the software described here. I also wrote the associated manuals for wtfm and aa_macro. I designed and built the genealogical and historical databases, and then put it all together in a massive dogfooding exercise to create both blish.org and ourtimelines.com.
A very large portion of the data here came from the James Knox Blish and Matthew Rhodes Blish genealogical works. I have corrected the very few errors in those volumes I have identified, and continue to add more data as I obtain it.
This is version two of my genealogical system, BenGen. The first version, written in the 1990's, ill-advisably relied on Microsoft's Access database software, which, as also will probably not surprise anyone at all, Microsoft failed to maintain over the years, which in turn destroyed my ability to maintain the site. This kind of failure to maintain compatibility is known, and not kindly, as bitrot.
This time around, everything possible is built using my own custom software running on a non-volatile(f/n #1) version of python. So the system is not going to break in any way that cannot easily be fixed. I have definitely learned not to depend on outside tools if at all possible. I also scrubbed Microsoft out of every corner of my life, and regret it not at all.
| Footnote 1 - Non-volatile |
| The version of python I'm using here can't be overwritten, altered, made incompatible, or broken, by (probably) well-meaning updates from the python, sqlite, or OS folks. |