ABCD is A Better CD Designer. The idea grew out of a frustration with trying to organize a snowballing backlog of digital photos so that photos could be both accessible for my own use and easily shared with others.

Most photo organizers keep photos by file names. Some better ones associate them with keywords, which is better, but still depends on choosing lots and lots of keywords without getting lost in them all.

An earlier design for ABCD actually used a database to store lots of facts about each photo: who, what, where, when, why, and how. This way a simple application could find photos fitting any reasonable criteria. This design had potential, but has one big drawback: it is hard to share photos with people who are not running the same database.

ABCD solves this problem by creating a directory tree and storing photos in it. Each photo can be stored in multiple places in the directory tree. For instance, a picture of my son with his grandmother from Christmas 2005 could be accessed through paths 2005/Christmas, Families/RYoung/Aaron, Families/Young/Mary, and any other categories it might belong in. The tree is used to generate HTML code, which can be viewed by any browser.

ABCD consists of 3 pieces. At the core is the XML database, which stores the photo information. Photo information includes the directory tree and all the files and references associated with it, along with optional data attached to all of them. The front-end editor is used to create and edit a database, and the back-end HTML generator uses HTML template files to translate the database into HTML code.

ABCD was designed with the following goals:

The goals were addressed as follows:


Java version 1.6 or higher


Here is a sample of the output of a project. These are a few photos from a trip to Mongolia a few years ago. I shrunk the pictures so they would not take up too much space on the web, but you can get an idea of the organization from these pages.


Usage: Data Editor
Usage: Generating pages
Main page