I have some exciting news… I've just about completed a Wikidot project that has taken over a year to do: the Descendant Database.
Pretty snazzy, aye?
But first, perhaps you're wondering, Where did James go???
I'm a busy man these days; I don't get enough time to spend with my cool programming hobby :(
But recently, however, I have been able to get back into it :)
So anyway, I announced that I was working on a project 12 months ago… but then I didn't launch it.
Currently, the user interface is in development, and not ready for public usage yet. However, the functionality exists and is working beautifully
Well basically, the functionality wasn't working beautifully. I found some glitches and was stumped with some limitations that made the “Families” project impossible. But due to a recent significant achievement by Wikidot user tsangk, I was finally able to overcome these limitations and finally complete this amazing project!
How does it work? It uses tags, hidden tags, page parenting, Data Forms, PagePaths, the Extended NewPage module, the CSS module, the iftags syntax, the ListPages module and the Nestable ListPages module.
One of the biggest problems I had was developing a user-friendly way to present the family tree. It used to be terribly abstract and ugly…
Anyway, another challenge was in the mechanics of the database. Because it uses incredibly complex use of data storage, I needed to install a form of “database validation” to correct any errors that may occur. And because human families are constantly changing and growing in complexity, it's easy to type in the incorrect information regarding a person.
The error detection was a huge challenge actually… at first the idea was to check if the variables for each entity make sense. If not it would tell you which variables didn't make sense. But then I needed the error message to explain why the variable didn't make sense.
The more I worked on the database validation, however, the more it transformed into something else. Something better.
Instead of telling you there's a problem with x variable, it simply tells you how to fix it. Exactly how. It's as simple as “copy and paste this text over there, and click save”
However it does have a limitation: It can only retrieve family relations separated by 0 or 1 degrees. So it can't do cousins or great relations:
|Relative||Connection||Degrees of Separation|
|Parent||You » Parent||Zero = Possible|
|Sibling||You » Sibling||Zero = Possible|
|Child||You » Child||Zero = Possible|
|Grandparent||You » Parent » Grandparent||One = Possible|
|Aunt/Uncle||You » Parent » Aunt/Uncle||One = Possible|
|Niece/Nephew||You » Sibling » Child||One = Possible|
|Grandchild||You » Child » Grandchild||One = Possible|
|Cousin||You » Parent » Aunt/Uncle » Cousin||Two = Impossible|
|Great-grandparent||You » Parent » Grandparent » Great-grandparent||Two = Impossible|
|Great-grandchild||You » Child » Grandchild » Great-grandchild||Two = Impossible|
For now, the project hasn't been launched yet. What's holding it up this time? I haven't created an installation process yet :)
Until then, feel free to check out this mini-showcase.
λ James Kanjo