The Process:

As a scientist by nature, I feel an insatiable desire to share the process that I went through to get my information on the web. Maybe you'd like to copy the process for your own family tree, or maybe you're just curious. Regardless, this is how I went about it:

1. Export a GEDCOM

GEDCOMs are the de facto filetype for family trees. They are open-source, and nearly every piece of software for family trees has the ability to export to GEDCOMs. Although GEDCOMs are a terribly inefficient file format, it's too bad. That's how it's done.

2. Have MySQL, PHP, and Perl available

If this means buying web hosting, do so.

3. Download Perl Code (or write your own)

Paul Johnson wrote some sweet Perl code to parse a GEDCOM. That alone is not enough though. Something needs to be done with the data. That's where this code came in -- it's intended to set up an entire website, but I couldn't get it to work. I just used /perl/gedcom.pl, but modified nearly almost every line of it. This code will get the data into SQL.

I initially used this Perl code, but the code was hard to modify to get everything I wanted out of the GEDCOM file. Although the first pass of this site was populated using the Perl code, I ended up writing a MATLAB script from scratch to do the job for me.

4. Get the data into SQL

The Perl code above populates a MySQL database directly, but when I switched to MATLAB I no longer felt like dealing with that overhead, so I instead just made a text file with all of my MySQL queries in it, then uploaded it via phpMyAdmin (which my hosting service provides). I will post my Entity-Relationship Diagram soon so you can see how my database is structured.

5. Create a web interface

While it would not have been entirely infeasible to create a separate .html file for each family in my database (3000 files or so), I preferred to write a web interface in PHP with a MySQL database. This has proved incredibly easy, especially since some of the code existed, thanks to Team Mongoose from a course in college. Two pages are all I really require - one to find a person, and one to view that person. Of course, the latter page would have links to that person's parents, children, etc. Clicking on a link would just reload the same page, but for a different person. More pages were later added - for adding people, adding information, logging in, etc.

6. Secure the site

While this site is not the most secure site ever, I am in the process of setting up different levels of security, all requiring a password. This is a first for me.


Summary of nerd skills used:

  • MySQL
  • Perl (or some other progrmming language for parsing a GEDCOM)
  • PHP
  • HTML
  • CSS
  • Paint.NET (kind of like Photoshop)