Wikidot: Descendant Database
29 Nov 2010 12:34
29 Nov 2010 12:34
29 Nov 2010 12:34
29 Nov 2010 12:34
nav_first.pngFirst: blog:1
My first blog!
Edited: 06 Nov 2011 11:49 by: James Kanjo
Comments: 2
Tags: ads blog css facebook first free myspace program programming wiki wikidot
nav_prev.pngPrevious: blog:67
Launching: Multilingual Framework
Edited: 06 Nov 2011 11:55 by: James Kanjo
Comments: 3
Tags: multilingual programming wikidot
Last: blog:77
Wikidot: CSS Per Category
Edited: 04 Mar 2012 05:54 by: James Kanjo
Comments: 3
Tags: programming wikidot
nav_last.png
Next: blog:69
iPhoto: Reclaim Your Memory!
Edited: 07 Jul 2011 15:22 by: James Kanjo
Comments: 21
Tags: apple application image iphoto mac optimise
nav_next.png

I have some exciting news… I've just about completed a Wikidot project that has taken over a year to do: the Descendant Database.

jameskanjo-family-tree.png
Pretty snazzy, aye?
image_search
file: jameskanjo-family-tree.png
fullname: blog:68

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

Comments:

Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +
All content on this page is subject to the guidelines outlined here