Code

This site is driven by Mason running on a mod_perl Apache server. Mason is a web site development and delivery engine similar to PHP, but built on perl. PostgreSQL serves as the database backend. All parts of the site are (or should be) valid XHTML 1.0 Strict. All XHTML and CSS is viewable with the "view source" feature of your web browser, and all the code and the database schema is available below.

This code is provided for the benefit of others who want to develop dynamic sites in Mason. Mason is extremely flexible, but some parts of the learning curve are fairly steep (the six lines of code in the site-level autohandler that pertain to populating $body, for instance, took quite a while for me to figure out.) You are welcome to fold, spindle, and/or mutilitate any of this code for your own purposes. The only considerations I'm interested in receiving in return are as follows:

  1. If you find a bug, please let me know instead of h4x0ring me. Releasing the code that drives this site is somewhat risky in that if there's any flaw I've overlooked, a million strangers are the first people who will know about it, and it's fairly likely one or two of them will be malicious.
  2. If you reuse or adapt any of this code elsewhere, please credit me.
  3. If you reuse or adapt any of this code into another web site, a link back to this site or my personal web site would be nice.

If you want an official licensing statement, then this code is released under the GNU General Public License version 2 as published by the Free Software Foundation. This means that what I've requested above isn't required, but it sure would be nice if you did it anyway.

Database Schema

The PostgreSQL database holds the entire contents of the DiskMAGs section. This includes information about all the floppy disks that have been dumped, the directory tree of all the disks (including the contents of the files), and a database of images found on the disks. The images table stores PNG conversions of Amiga-format images so that modern peoples can view them in their web browser. The point here is to make it possible for users to easily find all the delicious web content.

The directory trees of the ADF images were extracted with unADF and the database was populated with a set of custom perl scripts that are not included here. The type, mimetype, and longtype fields were populated with the help of the standard Linux file command. Almost all images found on the disks are in Amiga image formats, which are pretty useless to web browsers here in the modern era. The "images" table holds PNG conversions and thumbnails of all images. The "texts" table holds descriptions of some of the text files.

Representing a directory tree in a relational database isn't necessarily the most efficient way of doing things, but since we can expect that no file will ever be over 880KB (the size of an Amiga double-density disk), it's a good trade off for the ease of data manipulation that we get in return.

View the Database Schema

Site-Level autohandler

The site-level autohandler products the HTML head/body/etc. tags for all pages and also provides methods for components further down the chain to manipulate the page's title, header, and navigation. You will want to view the plaintext version to see the HTML as well.

View the Site-Level autohandler

DiskMAGs section

The DiskMAGs section section is driven by a single Mason component divided into various methods. As mentioned earlier, the entire contents of this section is stored in a PostgreSQL database. The code here is also heavily documented.

View the dhandler For the DiskMAGs Section

MAGazines and MCUC Magazines dhandlers

The MAGazines and MCUC Magazines sections are both driven by a single Mason component. The dhandlers act as wrapper for that component. The thumbnails, images, and text (if any) of the various pages are stored on disk, not in a database as is the case with the DiskMAGs section. The code is heavily documented.

All of the scanned pages in this section were processed with an excellent tool called unpaper (Jens Gulden's old site), which saved an incalculable amount of time.

View the dhandler For the MAGazines Section

View the dhandler For the MCUC Magazines Section

View the Magazine Gallery component