Saturday, March 15, 2008

software to generate genealogy web pages

Our family organization is looking at ways to put our genealogy records and histories online for public view, so I'm looking at our options. Our genealogy records are stored in GEDCOM, so we need to be able to upload that; we want everyone to be able to browse the data without signing up or other complications; we have our own website, so we can generate the content from software and publish it ourselves if necessary; we don't mind spending some money if it'll give us good features for sharing.

Here are my comparisons. I looked at these main features; I'll only mention below if they do NOT have these features.

- access: Does it allow public access without signups or paying?
- reports: Does it have multiple kinds of output?
- map: Does it show a map? (This isn't critical, but it's an indicator of advanced reports.)
- search: Does it allow people to search online?
- history: Does it allow for publishing stories and pictures?


All of these import the Gedcom format, which is critical for us.

Desktop Software

There are many desktop applications that generate reports, so we could use them to take our info and output our web site. They do much the same thing, and they do well in all areas except: they don't have online maps (except GedHTree), and they don't set up great web searches, though they generate many links for things like surname searches to find the person you want.

Personal Ancestral File (look for download link) is the original program, it'll always be around (and free) and we currently use it to maintain our genealogy, but we're not impressed by the pages it generates.

These 3 seem to be at the top because they're comprehensive... so they do more than we need, but they'll import GedCom and generate what we want:

Here's a page that reviews these first three (and a few others).

Master Genealogist - $34-70
... and for the online work add Second Site - $30
I didn't find a comprehensive list of features, but supposedly this is the best; there are companion products offered for things like maps and mobile devices.

Roots Magic - $30
Feature list

Legacy - $35-60
Feature list, and their own comparison with other programs


These 3 were also recommended simply for generating web content:

GedHTree - $20
This one does do maps (and "map sequences" which look interesting). We downloaded and used this successfully; the pedigree charts are nice. It only handles up to about 30,000 names.

GedPage - $10
"Uses Family Group Sheet format." The pedigree chart is simplistic and text-based. You can try it for free (and it processed 120,000-person GEDCOM), but it doesn't generate the pedigree charts.

GED2WEB - $21
Has pedigree charts. Free download trial.


Ged-Gen - $15
Does not create pedigree (or map); reportedly doesn't include photos so those must be done separately. Allows lots of look and feel customization. Free download trial.

GED2HTML - Free
No pedigree charts.




Internet Services

Tribal pages - $0

This does well in all areas except: there are no histories; it seems to only do the relationships. For a good example of reports and maps, see this record: http://dee894500.tribalpages.com/tribe/browse?userid=dee894500&view=0&pid=1648&rand=626605690

Roots Web - $0
This does well except that there aren't many reports and it doesn't do the histories.


Ancestry.com - $13-30/month
This appears to do great in all areas except: it doesn't allow full access unless you sign up. It claims to allow access to existing information for free, so I even attempted to sign up to see someone's historical info, but the page just offered the paid memberships (with 14-day trial). I definitely don't want to use this to try and share with people!

As a side note: I've heard from sources in the LDS Church that their new version of familysearch.org will have more options for attaching notes to individuals, and it should be available worldwide by 2009 (maybe even sometime this year).

Friday, March 14, 2008

maven 2 deploy-file command

I can never remember the vagaries of the deployment URL, etc!

Here is an example for activation.jar in our "soa" repository. Make sure to have the username/password for "soa-repo" in settings.xml, and probably the distributionManagement.repository in the pom.xml.


mvn deploy:deploy-file -DgroupId=javax.activation -DartifactId=activation -Dversion=1.0.2 \
-Dpackaging=jar -Dfile=/home/trent/dl/jaf-1.0.2/activation.jar \
-DrepositoryId=soa-repo \
-Durl=scp://soa@soa.dev.hq.icentris/home/soa/tomcat/webapps/ROOT/repository2

Oracle and JDBC test from different timezones

I predicted that Java would send the right thing to Oracle and we'd see the same thing in the database. I was wrong and Vijay was right: Oracle ends up with a different value, even though we send the exact same java.util.Date value.

Following is our test where we point Java programs running in different timezones to the same Oracle database.

Here are our two runs of the program below, from UT and then LA timezones:



$ java -cp .:ojdbc-14_g.jar DateTest UT
UT Pi Time Los_Angeles: 1205533140000 = Fri Mar 14 16:19:00 MDT 2008
UT SQL Pi Time Los_Angeles: 1205533140000 = 2008-03-14 16:19:00.0

$ java -cp .:ojdbc-14_g.jar DateTest LA
LA Pi Time Los_Angeles: 1205533140000 = Fri Mar 14 15:19:00 PDT 2008
LA SQL Pi Time Los_Angeles: 1205533140000 = 2008-03-14 15:19:00.0



Here are the results we find in the database when the dust settles:

UT piTimeLos_Angeles 2008-03-14 16:19:00.0
LA piTimeLos_Angeles 2008-03-14 15:19:00.0


DateTest.java:




import java.util.*;
import java.sql.*;
import java.text.*;


/**

create table time_test (
name varchar2(100),
time date
)

*/
public class DateTest {
public static void main(String[] args) {
String outPrefix = "";
if (args.length > 0) {
outPrefix = args[0];
}

Connection conn = null;
PreparedStatement pstat = null;
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
TimeZone timezone = TimeZone.getTimeZone("America/Los_Angeles");
formatter.setTimeZone(timezone);
java.util.Date piTimeLos_Angeles = formatter.parse("2008/03/14 15:19");
System.out.println(outPrefix + " Pi Time Los_Angeles: " + piTimeLos_Angeles.getTime() + " = " + piTimeLos_Angeles);

String DRIVER = "oracle.jdbc.driver.OracleDriver";
String URL = "...";
String USERNAME = "...";
String PASSWORD = "...";
Class.forName(DRIVER);

conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
pstat = conn.prepareStatement("insert into time_test (name, time) values (?, ?)");

//java.sql.Date piTimeLos_AngelesSql = new java.sql.Date(piTimeLos_Angeles.getTime());
java.sql.Timestamp piTimeLos_AngelesSql = new java.sql.Timestamp(piTimeLos_Angeles.getTime());
System.out.println(outPrefix + " SQL Pi Time Los_Angeles: " + piTimeLos_AngelesSql.getTime() + " = " + piTimeLos_AngelesSql);

pstat.setString(1, outPrefix + " piTimeLos_Angeles");
//pstat.setDate(2, piTimeLos_AngelesSql);
pstat.setTimestamp(2, piTimeLos_AngelesSql);
pstat.executeUpdate();

pstat.close();
conn.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}



Tuesday, February 26, 2008

marking up the web

The article Five Ways to Mark Up the Web explains 5 services to mark up content on other web pages. A few look like they can be read without plugins or downloads (which is important for readers; I can do a plugin to create content, but I want everyone to read them):

- Diigo - searching my own bookmarks is great; search fails on group content...?

- Fleck - I cannot find any public search utility

- TrailFire - I couldn't download in my Linux FireFox ('cause tried to save the PHP files); plus it gave blank pages when I tried to look at some of the existing content

Tuesday, February 12, 2008

"cloning an iPod without software"


I got this from elsewhere.

_______________

I discovered by accident an easy and stupid way to not only clone an
entire iPod but also to recover the songs from it to your library in
case you HD goes missing in action or even if you get a new computer.

There are software out there costing $20 that do it for you, but I
discovered it is not needed if you do it like follows.

Here's the simple steps to it:

- Close iTunes
- And mount your iPod on Windows (works on Linux too) as if it was a
storage USB drive.
- Use windows Explorer and make sure you are displaying hidden files.
- Go to iPodControl directoy and copy the music folder to your HD. iPod
has a funky way to organize the songs into weird folder and weird names.
Don't worry we will fix it.
- Now go to you iTunes and set Automatically Organize songs on its
settings page.
- Click on Add/Import folder and point it to where you copied the songs
in your hard drive. This will copy the whole thing to your library
keeping the song titles, album information etc.

Ah, yes. In case you have 2 iPods with 2 different names, just create
another user account on your Windows machine so that you can have
different iTunes settings on the same computer.

There you go, all copied!!!

This is a nice way to backup your own music library to more than one
computer as well as copying to a second iPod in case you decide to get
one with bigger capacity.

If you happen to buy music online, it is a good way to back it up too in
case your iPod HD goes bad.

Also, if you want to update your iPod OS make sure you do this first
because you can risk loosing its content by updating its software.

Monday, February 4, 2008

automated emails for specific SVN commits

I have two scripts that I plug in to SVN to notify me when changes are made to certain files. The first script should be referenced in the SVN repository's "hooks/post-commit" file, and it will call the second.

svn-diff-hist1.sh and svn-diff-hist2.sh

Usage:
svn-log-diff1.sh {REPO} {REV} {FILE_SUBSTR_REGEXP} {EMAIL}

For example:
svn-log-diff1.sh $1 $2 "trunk.*greenzone" trent.larson@icentris.com
... will email me whenever any file is checked in that has "trunk" followed by "greenzone" in it's path.

svn-diff-hist.sh: searching back through SVN changes

This script walks backward through the SVN commits and shows the changes that happened for each revision. The output comes in 3 sections (separated by a line of '#' symbols):
- all the logged comments
- each change diff
- the entire file when it was first committed

Usage:
svn-diff-hist.sh {FILE} [{EARLIEST-REVISION}]


By default, it walks all the way back to the first version where it was checked in.