Archive for March 2006

We’re late!

When I first saw the URL for WeRelate, I thought it was We’re Late. :) But no, this new site has nothing to do with punctuality. Dan Hanks tipped me off to it, and while at first I wasn’t very excited about it (this was a few days ago), just now I took a second look at it and it’s pretty darn cool.

Basically, it’s a wiki for genealogy. What does that mean? First, users can have their own home pages where they talk about genealogical research. Very nice. Even better, and this is the important part, being based on a wiki means you can have collaborative editing on things like places. Now you can collaborate in a whole new way. I’ll be talking more about this later once I actually do some genealogy with it. :)

Taking genealogy to the common person

Discovered an excellent new blog by Dan Lawyer, Taking Genealogy to the Common Person. There’s been a lot of good discussion on it so far and I expect it to continue with innovative ideas and other things that need to happen to make genealogy the best it can be. There’s also Randy Wilson’s Source-Centric Genealogy, which holds promise but isn’t updated as often as I’d like (and there’s only one post so far).

As far as Beyond goes, my laptop died yesterday and I’m still trying to figure out what I’m going to do. The Macs on campus unfortunately don’t have Xcode installed. Maybe PyObjC would still work… I can still work on the design, of course, but I don’t have any code written and this projet’s vaporware status is bothering me a great deal. Balancing my various and sundry projects has been a tad bit difficult. But that’s no excuse. ~sigh~

Before my Powerbook died, however, I did start looking at the PAF file format. It’s more complicated than I’d expected, but not impossible (obviously). I think I’ll start by writing a Python program which reads/writes PAF files (and I can do that from any computer, really, since I don’t need Xcode).

Brainstorming notes

Set aside an hour of time tonight to work on Beyond. I consolidated my ideas into one file and put them into a PDF: Beyond-Brainstorming.pdf. Keep in mind that this is very raw material, mostly unedited. The next step is to decide on the goals I want Beyond to achieve, which will in turn influence the guidelines I use in making design decisions (like which features are important). Some of these goals have already popped up in the brainstorming PDF, as you’ll see.

I tried to do some UI sketches but realized that I need to solidify these goals first, and I also need to get a clearer picture of what the data model is going to be like. (I’d like Beyond to be capable of historical research beyond just family history — so you can use it to research the history of an organization or a town, for example — and so the interface needs to be flexible enough to support both that and the normal pedigrees, etc.) I don’t know yet if there’s a clean, beautiful way to support both types of research in the same interface; if not, I’ll either have to ditch the historical part (which I don’t really want to do) or build two interfaces. By “interface” I mean the way you access the data (pedigree charts, family group records, lists of individuals and families, etc.). With an organization, for example, you have roles (president, vice president, committee member, etc.) that can have multiple people filling them at different times (e.g., “Jack Brown was president from 1892 to 1895; Steven Stevens was president from 1895 to 1899″). Things get complicated. Hmm, I may end up splitting the historical research stuff into a separate app, leaving Beyond with just the genealogical aspects of it. Simpler = better. I’ll think about it some more and decide later.

More time management woes

I have too many things on my plate right now, mostly self-imposed. And Beyond is probably my biggest project ever. From Paul Graham’s Good and Bad Procrastination essay:

Big problems are terrifying. There’s an almost physical pain in facing them. It’s like having a vacuum cleaner hooked up to your imagination. All your initial ideas get sucked out immediately, and you don’t have any more, and yet the vacuum cleaner is still sucking.

You can’t look a big problem too directly in the eye. You have to approach it somewhat obliquely. But you have to adjust the angle just right: you have to be facing the big problem directly enough that you catch some of the excitement radiating from it, but not so much that it paralyzes you. You can tighten the angle once you get going, just as a sailboat can sail closer to the wind once it gets underway.

If you want to work on big things, you seem to have to trick yourself into doing it. You have to work on small things that could grow into big things, or work on successively larger things, or split the moral load with collaborators. It’s not a sign of weakness to depend on such tricks. The very best work has been done this way.

All too true. Frankly, this project has me scared silly. Doubts creep in all the time. It’s a gigantic amount of effort and I honestly don’t even know if I’m capable of doing it. Yet I cannot give up. The idea is too beautiful to abandon. And I’m blessed (cursed? ;)) with dogged perseverance when I know I’ve got a good thing.

Anyway, because Beyond is so terrifying (to use Paul Graham’s words), I try to find every way possible to avoid actually working on it. :) The number of projects I’ve started since I first got the idea for Beyond is amazing. And yet I know I need to write this program — it’s important. There aren’t any genealogy apps out there with style or taste. Besides, I’ve got ideas that need to be born into reality. So, I’ll do my best to make time and try to avoid avoiding this project. :)

A review of GEDitCOM

Over the next week I’ll be trying out the various Mac genealogy apps and seeing what’s good and what’s not. So I downloaded GEDitCOM and just tried it out. Um, can we say unintuitive? First of all, when you start it for the first time, it doesn’t actually open a window. So you have to go up to the menu bar and create a new file. Bad. Second, when I do create a new file, up comes a grid and it’s not really clear what to do next. There is a textbox saying “Typed Name:”, so I tried typing a name in there and hitting Return. Nothing happened. So I went down to the grid/table (which has labels like Name, Birth, Death, Father, and Mother) and tried typing in a name, to add a person. Nothing. Double-clicked. Nothing. Finally I had to go up to the menu and find the New Individual command, which is under Tree. Not intuitive. And the “New Individual” dialog is…ugly. The toolbar’s not helpful because it’s not clear from the icons what they do, and they’re not labeled.

Anyway, enough of that. I’ve got to get to bed and so I haven’t been able to do more with it, because I’m sure it has strengths that I just haven’t found yet. At any rate, seeing the level of user unfriendliness has renewed my determination to write Beyond as soon as I can and show the world how easy genealogy can be (at least when it comes to the software :)).

Shower inspirations

This morning in the shower I thought about my grandmother and wondered whether she’s been doing any genealogy lately. If she has, then of course I’d want to get a copy of her PAF file. That would then mean merging it with mine, or at least looking at the differences (including what’s new since her last update). The natural way to do that, I think, is visually. Imagine Photoshop layers: you have one file on one layer, and the next file on the next (and you could, in theory, compare even more files). There would have to be symbols overlaid on the chart so you could tell what doesn’t match up — one symbol/color meaning that it’s the same person but some of the dates/places aren’t the same, another meaning that it doesn’t look like it’s the same person, etc. Then you could overview the whole pedigree and see who you need to check. There would need to be a normal list-of-changes view as well, so that you don’t miss anything. But this seems to be a better way (a more natural way, at least) of comparing data.

Problem: there are people in the database who aren’t on the pedigree. (Namely, anyone who isn’t your direct ancestor.) Hmm… This is a problem, especially because I want Beyond to support non-family relationships as well (so you can say “Joe Clark was my friend in 2002,” or “Rick Magleby was Jane’s boss from 1995-1999″ or “Thomas Watkins bought land from Robert Shanks for $32.47 on 23 Jun 1832″). Why? Historical research needs it, to be thorough. That way you can see every person who’s connected to your ancestor in any way. (Lots of non-family relationships show up in the records, and it’d be nice to store those, because they can be of great value in finding clues that help further your research.)

Perhaps a circle/cloud view like Visual Thesaurus’s would work. You start with the Home person (#1, probably yourself) in the middle, and then the connections branch out like spokes in a wheel. The only issue with that is it’d be rather messy. I wonder if there’s a good and uncluttered way to represent a database like that…

More ideas: for the pedigree view (and this will apply to the whole-database view, once I figure out what it’ll be), I want the user to be able to zoom to any level. So instead of being set at four generations on a screen, you can zoom in/out and pan around (like in Illustrator or Photoshop). There’ll also be an Overview window off to the side that shows you the whole chart and pinpoints your current location on it (like a map, basically).

Finally, unlimited undo. I’d like to do a history list like in Photoshop, actually. The main reason is that if users feel secure and safe with the program — when they know that their data isn’t going to disappear and that they can undo anything they later regret — they’ll be more free to experiment and tinker with the data. And that’s where the good research starts to blossom.

Tagging

With all the tagging craze going on (del.icio.us, Flickr, LibraryThing, etc.), I’ve been wondering if tags would be useful in Beyond. Imagine being able to tag a person (or family, or line, or piece of data attached to a person) as “researching” or “notsure” or “followup” or whatever. If you’re collaborating with someone else, you could even tag the item with their name — a line tagged “matt” would then mean that Matt’s working on that particular thing. The advantage of this is that users would be able to superimpose their own organization on their data, free of chronology and other inherent groupings (though of course those would still be there, just on a different level). And of course you’d be able to search for tags and all that.

Another idea: it would be nice to know when you last worked on a line, a history of your research of sorts. Perhaps this would best be done visually, in the pedigree chart (the boldest lines being the ones you’ve worked on lately, fading out to the ones you haven’t touched in a while). Hmm…

Throughout the next while I’ll be brainstorming up ideas like this and then deciding which features are really necessary/useful and which can be relegated to post-1.0 status. Time to start compiling a possible-features list…

Followup on sponsorship

I submitted my proposal today to the director and he approved it, starting spring term. So for the next month and a half I’ll just be doing it on the side, as normal, but then I’ll divide my work time in half and will work on Beyond at least twenty hours a week. That’s going to be very, very good, because otherwise it would take forever to get to where I want it to be. But don’t worry, I’ll won’t be slacking off this next month and a half. :)

Good news

Today I talked with the director of the Center for Family History and Genealogy here on campus (who also happens to be my employer) and mentioned Beyond, asking whether the Center might be interested in sponsoring it, so to speak. He said it’s quite possible, and that’s very good news because it means I can take a chunk of my work time (probably five hours a week now but around twenty during the summer) and work on Beyond with it and not feel guilty about losing money (bills, bills, bills). :) So I’ll be drafting a proposal pretty soon and will hopefully be able to get it under way before too long.

As far as the current state of Beyond, I still haven’t made the time yet to consolidate all my design sketches and ideas into a single document. But soon! As far as the language goes, I haven’t made up my mind yet. PyObjC looks very nice if only because I won’t have to worry about memory management. :) And Python (or Ruby) would lend itself better to more rapid development. We’ll see…

Rubies are red

I’m going to be doing some research this week to see whether I’ll be writing Beyond in Objective-C, Python (via PyObjC), or Ruby (via RubyCocoa). My first choice would be Ruby, because I really like what I’ve seen of the language so far and it’s at the top of my to-learn list, and it looks like it’ll be quite possible. If it doesn’t work out, though, my next choice is Python. And then Objective-C. I’m not very excited about memory management if I do have to use Objective-C, frankly, and that’s probably one of the main reasons I’d rather use Ruby or Python (along with the fact that writing apps is faster with the latter two). But at the same time I do need to learn Objective-C. Well, I’ll throw a few tests together this week and see what’ll be best for the project…