While visiting with Mom last week in Cincinnati, we spent some time together reviewing the family history tree information we compiled 15 years ago. I made notes on corrections and additions needed to the database. She’s an amazing and rich resource for this information. There’s an amazing little side story I’ll have to write about someday that sheds some light on positive things that came from World War II in Germany, and about how remarkable my mother really is. Between the two of us we have accumulated quite a bit of information. I’ve received a number of E-mails over the years from people who have contacted me from reviewing the Wessels family tree published on the Internet. Some of that E-mail was written in German, which I cannot read, so I was glad to review all of those notes with her.
Most Genealogy software uses a standard file format called GEDCOM for sharing information. Back in 1994 I embarked on a Smalltalk project (in Squeak of course) to read, and write, GEDCOM file data. The most important part of that project, from a technical aspect, was to create a tool that wrote a full suite of HTML pages as output. The Wessels family history tree linked above is that output. The Squeak application reads in a GEDCOM file and produce static HTML pages which are then uploaded to our personal web site.
Writing an application like this in Smalltalk is very rewarding because I learned a lot about modeling family history information and it gave me the freedom to create the type of output reports that I really wanted. Of course, today, I would probably approach this as a Seaside application since creating these pages dynamically would yield interesting query and search capabilities. Seaside is of course one of those wonderful dynamic web frameworks written in Smalltalk that really exemplifies what can be done with managing dynamic information on the web. The trick for me in porting to Seaside would be in finding a web host where I can actually run the application. I’ve been using my current web host, Lunar Pages, for many years now and am quite satisfied with their reliability, capacity and cost. However, like many other web hosts, they support PHP, MySQL and Ruby, but alas no Seaside. Time to get more of these web hosts educated. Like most Smalltalk enthusiasts, we’re leading the curve on much of what becomes common place software concepts years later.
Going back and enhancing the Squeak software for this project after all these years was informative. There were only 2 bugs I found when porting to the latest version of Squeak 3.10.2. The bugs were related to how Date objects work now. The newer Month objects in 3.10.2 are a good design but caused a small hiccup in my application which I was able to quickly find and fix.
I have some ideas for enhancements and have begun coding those in earnest. I’ve also learned something about myself from reading through this code from years ago. There is clear evidence that indeed my coding and design skills have grown over time. For example, I was not using SUnit as heavily as I do nowadays. However, I had coded quite a few testing methods as Class methods used to validate the implementation. It was simple enough to extract those into new Test Case classes for SUnit. I also saw quite a few opportunities for refactoring. There was a lot more repeated code chunks in that code than I would have written today. As I’m sure any experienced developer already knows, you find refactoring opportunities as soon as you add enhancements to legacy code.
I’m still writing my next update to the code and will also update the family tree data when it’s all done. That should be in about a week. As an additional exercise I’ll look into what it would take to host this all as a Seaside application too. The best way to really learn about Seaside (or anything else for that matter) is by just doing it.