{"id":931,"date":"2012-05-18T13:13:06","date_gmt":"2012-05-18T11:13:06","guid":{"rendered":"http:\/\/hen.co.za\/blog\/?p=931"},"modified":"2012-08-06T10:32:35","modified_gmt":"2012-08-06T08:32:35","slug":"gendb","status":"publish","type":"post","link":"https:\/\/hen.co.za\/blog\/2012\/05\/gendb\/","title":{"rendered":"GenDB"},"content":{"rendered":"<p><a href=\"https:\/\/hen.co.za\/blog\/wp-content\/uploads\/2012\/05\/GenDB.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-933\" title=\"GenDB\" src=\"https:\/\/hen.co.za\/blog\/wp-content\/uploads\/2012\/05\/GenDB.png\" alt=\"\" width=\"709\" height=\"107\" srcset=\"https:\/\/hen.co.za\/blog\/wp-content\/uploads\/2012\/05\/GenDB.png 709w, https:\/\/hen.co.za\/blog\/wp-content\/uploads\/2012\/05\/GenDB-300x45.png 300w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/a>I&#8217;v been involved\u00a0for many years with helping, developing, working with an uncle of mine&#8217;s <em>genealogical<\/em> research &#8211; at least the &#8216;IT&#8217; side of things. Over this time I developed more than one solution to house a database for storing all the relevant data gathered &#8211; first an Access database and later stand-alone application using either the old Access database or newer sql express. Lately I&#8217;ve been trying to find a way to get away from the clumsiness of having a separate piece of software installed to get a database. It just makes setting up and maintaining an application so much more difficult &#8211; since the type of person using these applications are usually very close to &#8216;computer-illiterate&#8217; or just doesn&#8217;t care &#8216;how it it works&#8217; but rather just &#8216;that it to works&#8217;.<\/p>\n<p>So I&#8217;ve been working to create something that does not require a traditional database but is still easy to maintain and troubleshoot if needs be. I choose to use a plain and simple xml file. You might start to\u00a0think that this is bad idea because of various reasons like loosing all the features built into professional database systems. But you would be wrong for the &#8216;wrong&#8217; reasons \ud83d\ude42 . Let me explain. For the purpose of this system the requirements are different from what you would expect when using a &#8216;traditional&#8217; database. Consider this &#8211; for this little &#8216;system&#8217; the following are applicable:<\/p>\n<ul>\n<li>Single user, single machine use only<\/li>\n<li>The volume of data is &#8216;low&#8217;. I can&#8217;t imagine someone want to put millions of persons&#8217;s information in this little application. I have an actual working example with the information of 11000+ people and the performance is really good.<\/li>\n<li>No need for fancy transactionality, relational integrity and other jargon users don&#8217;t understand anyway (at the database\/file level). The app itself (dal\/object level) takes care of it.<\/li>\n<li>backups are as easy as simply copying a singe file to some other location<\/li>\n<li>although xml is well structured and for &#8216;computer&#8217; use even a normal user can open the file and view it as text to read it. Of course, they can also easily break it by editing it manually&#8230;<\/li>\n<li>Fewer components to maintain. No security fixes\/service packs of sub components of which most parts are not even used at all. That is the &#8216;price&#8217; you pay for using a technology that has to cater for lots of different possible ways to use it.<\/li>\n<\/ul>\n<div><span style=\"line-height: 18px;\">So the little application I created is a plain and simple C# Windows application. All it requires is the &#8216;client-side&#8217; .Net 4 framework (not even the full thing) which is relatively small these days. It is still really a &#8216;proof-of-concept&#8217; application but is fully functional and usable.<\/span><\/div>\n<div><\/div>\n<div><strong>Summary of the features:<\/strong><\/div>\n<div>\n<ul>\n<li><span style=\"line-height: 19px;\">Enter\/view details of persons (like names, surnames, dates and places of birth\/christening\/death, parents and children, marriages, history, photos and even unlimited separate notes)<\/span><\/li>\n<li><span style=\"line-height: 19px;\">View a family tree for a person &#8211; both\u00a0predecessors and\u00a0descendants\u00a0\u00a0plus a summary of each person (birth\/death\/marriages). Up to 7 generations (up and down) are allowed but for practical reasons it is better to specify less.<\/span><\/li>\n<li><span style=\"line-height: 19px;\">There are several built-in reports (too many to name now). Since they are all html based they are easy to export and share with others.<\/span><\/li>\n<li><span style=\"line-height: 19px;\">Searching for persons (of course)<\/span><\/li>\n<li><span style=\"line-height: 19px;\">Comparing details of multiple persons (even a graphical view of living-years so you can see who lived around the same time)<\/span><\/li>\n<li><span style=\"line-height: 19px;\">Mark selected persons as &#8216;favourites&#8217; so you can more easily find them again.<\/span><\/li>\n<li><span style=\"line-height: 19px;\">You can have multiple &#8216;databases&#8217; (files) &#8211; simple got to settings and select another file.<\/span><\/li>\n<li><span style=\"line-height: 19px;\">the .gfdb file extension is associated with the application meaning you can simply double-click \u00a0such a file in Windows Explorer\/Desktop and it will be opened with the application.<\/span><\/li>\n<li><span style=\"line-height: 19px;\">Since we mostly use the &#8216;<a title=\"Genealogical numbering systems\" href=\"http:\/\/en.wikipedia.org\/wiki\/Genealogical_numbering_system\" target=\"_blank\">de Villiers\/Pama System<\/a>&#8216; genealogical numbering system in South Africa there is some support to automatically generate these numbers based on a person marked as the progenitor.<\/span><\/li>\n<\/ul>\n<\/div>\n<div><span style=\"line-height: 18px;\">It also features bilingual &#8216;run-time&#8217; support which is something you don&#8217;t find often in applications. At the moment it support both English and Afrikaans.<\/span><\/div>\n<div><\/div>\n<div><strong>Data format<\/strong><\/div>\n<div>I did consider GEDCOM and even GEDXML at some time but both have &#8216;issues&#8217; of their own. GEDCOM is a text flat file format that is not very user friendly and easy to &#8216;break&#8217;. It is very widely used though. GEDXML is not really a standard format at all. They started working on it and abandoned it after a while &#8211; not sure why.<\/div>\n<div>&#8216;My&#8217; format is not really a standard on its own &#8211; I&#8217;m not claiming it to be super or fantastic. It is plain and simple and works for my purposes.<\/div>\n<div><\/div>\n<div><strong>Installer<\/strong><\/div>\n<p>Grab a copy of the installer <a title=\"GenDBSetup1.0.zip\" href=\"http:\/\/dl.dropbox.com\/u\/20983\/GenDBSetup1.0.zip\" target=\"_blank\">here<\/a>\u00a0and let me know what you think. The zip file contains an example gfdb file containing some (fictional) Star Wars character information to illustrate how the application work.<\/p>\n<p>Update: Version 1.1 available <a title=\"GenDBSetup1.1.zip\" href=\"http:\/\/dl.dropbox.com\/u\/20983\/GenDBSetup1.1.zip\" target=\"_blank\">here<\/a>.<\/p>\n<p>Another Update: Version 1.2 available <a title=\"GenDBSetup1.2.zip\" href=\"https:\/\/dl.dropbox.com\/u\/20983\/GenDBSetup1.2.zip\" target=\"_blank\">here<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;v been involved\u00a0for many years with helping, developing, working with an uncle of mine&#8217;s genealogical research &#8211; at least the &#8216;IT&#8217; side of things. Over this time I developed more than one solution to house a database for storing all &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/hen.co.za\/blog\/2012\/05\/gendb\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[187,6],"tags":[37,186,304],"class_list":["post-931","post","type-post","status-publish","format-standard","hentry","category-genealogy-2","category-projects","tag-database","tag-genealogy","tag-projects"],"_links":{"self":[{"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/posts\/931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/comments?post=931"}],"version-history":[{"count":8,"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/posts\/931\/revisions"}],"predecessor-version":[{"id":935,"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/posts\/931\/revisions\/935"}],"wp:attachment":[{"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/media?parent=931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/categories?post=931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hen.co.za\/blog\/wp-json\/wp\/v2\/tags?post=931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}