Ben Crowder

Blog: #genealogy

29 posts :: tag feed :: about the blog :: archive

Lately I’ve been playing around with implementing genealogy sparklines on the web. Still very much a work in progress, but I’m trying to do more working in public, so here’s the messy current status (and at some point I’ll post the actual HTML/CSS):

Ruby test


Implementation notes:

  • The sparklines use inline SVG
  • This test uses the <ruby> and <rt> tags, with ruby-position set to under and ruby-align set to start (though only Firefox supports it so it’s not sadly viable for actual use yet)
  • I don’t really like that it makes the leading uneven (lines that have ruby vs. lines that don’t)

Design notes:

  • Rather than having solid squares at the births and deaths, I’ve gone for vertical lines so they’re less obtrusive (and have also considered just getting rid of the vertical lines, though I haven’t tried it out yet)
  • Circles are simple so I went with them for marriages and children

Absolute positioning test


Implementation notes:

  • The names are wrapped in span tags with position: relative set, and the SVG gets position: absolute. Fairly simple.
  • Even leading!
  • There’s some wonkiness right now when the span is at the beginning of a line (the sparkline shows up at the end of the previous line), haven’t tried very hard to fix it yet

Reply via email or via office hours

Accidentally spent a couple hours working on my Italian-side genealogy (late 1700s and early 1800s in Morrone del Sannio). It had been a while since I’d done much family history — long enough that I’d forgotten how easy it is to get sucked in and completely lose track of time. Whoops. Sorry, contemporary family. For the sake of the fourteen new (or rather old) direct ancestors I found, though, it seems worth it.

Reply via email or via office hours

I used to keep track of genealogy research todo items in an app of my own make (Gent), but lately I’ve had better success with a combined todo/notes approach using Google Docs. (I create a document for each family I’m researching — or for groups of families when I feel like it makes sense — and pretty much just use lots of bulleted lists.)

As for the research itself, I recently made compact family charts (I’ll blog about those sometime soon) and have been filling in the gaps in my lines. As part of that, most recently I’ve been sourcing everything on my Iorio line in Morrone del Sannio, since I did most of the research on microfilm back before sourcing was easy. (Sidenote that’s probably also a post for another day: in the last month or so I’ve found that I can now do pretty much all the research on my phone, which has led to a fairly big increase in how much time I spend doing genealogy.)

Reply via email or via office hours

A quick update: school’s starting today (I had July/August off, thus the burst of art), so posts will probably be even less frequent going forward.

I’ve been doing a lot of family history lately. One of my third cousins messaged my mom on Ancestry a couple months ago, one thing led to another, and now I have dozens upon dozens of Italian cousins on my Napoleon line that I had no idea existed. It’s been great getting to know them.

I did the Ancestry DNA test recently and have been making contact with more of my relatives who match. (It can be harder to find the common ancestor than I expected, though.) I also apparently have a Scandinavian line on my dad’s side, which was news to me — I’m fairly familiar with my family tree but haven’t ever seen anything Scandinavian.

I realized that it’s fairly easy to keep Ancestry and FamilySearch trees in sync, and it’s nice to have a personal tree in case people make unwanted changes to FamilySearch, so I created an Ancestry tree and have started copying everything over. Ancestry’s nicer than I realized.

Contacting my cousins has led to my doing more research on my Napoleon line. This past weekend I pushed the main line back two generations, and I’ve also started fleshing out some of the collateral lines.

One of my side projects as part of all this is building a nice, relatively easy way to generate clean family charts from JSON data, so that I can easily generate PDFs and share them with my cousins who aren’t on Ancestry or FamilySearch. More to come.

Reply via email or via office hours

Scanning journals

I’ve recently begun scanning my journals using my iPhone and the Scanner Pro app, and it’s working out fairly well. My process:

  • Using the built-in iPhone camera app, I long press to lock focus and exposure (this saves time so it doesn’t have to autofocus each time), then photograph each page of the journal. It’s not as high quality as it would be if I used an actual scanner, but it’s much, much faster, and far more portable.
  • After I’m done photographing, I open Scanner Pro and select the images from the camera roll, then use the Black & White Document setting to process them into a PDF.
  • From Scanner Pro, I export the PDF to Dropbox.

The resulting PDF is nice and clean and easy to read, and the files aren’t too big (150 pages is usually between 80 and 200 megs — for me, very much worth the space to preserve important documents).

A concocted example:


That’s before (the image is straight from my iPhone camera, no postprocessing), and this is after Scanner Pro is done with it:


I should add that ordinarily, with actual journals there wouldn’t be as much empty border around the content.

One hitch I’ve run into is that Scanner Pro chokes on anything larger than around 150 pages (it crashes), so I do long journals in chunks.

For that reason and a few other small annoyances, I’ve been looking into replacing Scanner Pro with a desktop-based script that takes a list of photos and processes them into a nice black and white PDF. Imagemagick gets me part of the way there with this command:

convert input.jpg -threshold 50% -blur 1x1 output.jpg

Here’s what it looks like for the above note card scan, at 30%, 50%, and 70% threshold, respectively:


At some point I’ll try writing a Python script that dynamically evaluates each page and adjusts the threshold as necessary to get the best result. Until then, though, I’m still using Scanner Pro.

Reply via email or via office hours

Life sketches in Family Tree

I’ve been doing more family history lately (more on that soon), and one thing I’ve started doing is writing simple life sketches for each ancestor and putting them in Family Tree. For example, I took the data for Manuela Gandara Cobo and wrote this:

Manuela Gandara Cobo was born around 1811 in Setién (Marina de Cudeyo, Santander, Spain) to José Gandara Valdecilla of Ceceñas (Medio Cudeyo, Santander, eight kilometers from Setién) and Josefa Cobo of Setién. She was the second oldest of five children that we know of (she had an older brother, Manuel, younger sisters Nicolasa and Vicenta, and a younger brother Remigio).

She married José Fuentevilla Fuentevilla when she was 18 and he was 20, in his hometown of Polanco (around 36 kilometers from Setién). They had nine children (seven girls, two boys), three or four of which lived to adulthood. Their first child died within the first year, Josefa died when she was two, Francisca died when she was almost eight, Maria Dolores died the day after she was born, and José Maria died when he was six months old.

Her mother died at age 47 in 1836 when Manuela was 25, and her father died at age 71 in 1853 when she was 42.

Manuela was 68 years old when she died in 1879, a year after her husband José died. (Incidentally, she died just ten days after her older brother Manuel.) At her death she had had ten grandchildren through her daughters Maria Remedios and Maria Isabel.

The prose is far from poetic, and it’s just a restatement of the basic facts of her life (and as you can see, the information I have is somewhat death-heavy), but I think it has a couple benefits: it’s a story, so it’s more parseable and memorable, and including ages and context makes the dates more meaningful. For example, seeing that Francisca was born in 1835 and died in 1843 doesn’t convey the same weight for me as reading that she was seven years old when she died.

I’m haven’t added these for very many ancestors yet, but I plan to do it for all of them, even the ones we know next to nothing about.

Update: My friend Barney Lund recommended adding world events as well. I haven’t done this yet, but I like the idea a lot. I’d probably add a paragraph at the end listing the major events that happened during Manuela’s lifetime (and probably how old she was and what her family composition was at that point).

Reply via email or via office hours


For a while I had been itching to have a better way to track genealogy research todo items — something that organizes items by family and links back to Family Tree, mainly. And thus Gent was born:


I’ve been using it for a couple months now and really like it. Before, I felt disorganized and didn’t know where all my notes were; now, even if I come back to my research after a month or two away, it’s easy to get back into it.

The app is built on Django (Python), and I’m calling it a 0.1 release since there are almost certainly bugs I haven’t found. But it does work for me. (For what that’s worth.)

Reply via email or via office hours

Sparkline pedigree chart

This proof of concept takes the genealogy sparklines idea and puts it on a pedigree chart:

The white diamond represents a marriage, and the small circles represent children. The length of the line corresponds to how long the person lived. (Also, the data is very made up.)

As I’m writing this, I’m thinking these sparklines might work better on a family group sheet instead of a pedigree chart.

Reply via email or via office hours

Assertion-based genealogy proof of concept

This is a rough, experimental proof of concept showing how an assertion-based genealogy app could work. The basic idea is that you type in the facts you know (usually from a record you’ve found), and the app pieces together the people and relationships. Here’s the video:

And a screencap:


  • I’m not very good at After Effects. (Thus the oversize mouse cursor I threw together, the less than ideal pacing, etc.)
  • Overall, the idea of assertion-based genealogy continues to intrigue me. It feels simpler — I add a source and list the facts/hypotheses found in it, and the system takes care of linking it all up.
  • Toward the end of the video, the mouse clicks on the first fact and it dims, and Domenico and Mariantonia disappear from the chart area. The idea here is similar to toggling a layer’s visibility in Photoshop — disable a fact to see what the chart looks like without those conclusions.
  • I didn’t mock this up, but I envisioned the right (empty) sidebar being used for analysis, somewhat like my Family Analysis prototype, and for flagging errors (a father born after his child is born, a mother dying two years before she gives birth, etc.).

Reply via email or via office hours

Experimental family pedigree

This experiment takes the style introduced in January and uses it for a family pedigree (this time with real names and dates from my Italian side in Morrone del Sannio):

Three generations would have been better than four (mostly because of spacing). There’s also a bit of redundancy — people on the main lines show up twice, once as a child and once as a father/mother. Overall, though, I like being able to see the children of each family across multiple generations.

Reply via email or via office hours