My Blog

Welcome! What is this blog for/What will be blogged here? Well, frankly, only time will tell that ... ;-) The plan is to have stuff like ... what I plan to do/Interesting things that I want to share. My interests and hobbies ... and what I'm doing/not doing for it. Random thoughts/Opinions. Just about anything I feel like writing! have fun!

Saturday, March 26, 2005

Zip Code Visualization

Ben Fry has created an Applet using which you can visually track down a zip code.

Start typing the zip code and see the region narrowing down. For e.g., type 0 and watch the entire New England region lit up - i.e. all the zip codes that start wih a 1. Type further to zoom in on the region of the zip code. To type a second zip code, don't forget to use tge backspace!

Technorati Tags: , , .

Wednesday, March 23, 2005

UML Reference Card

Laurent Grégoire has a one page quick summary for UML - the UML Reference Card in pdf.

Technorati Tags: , .

Low-Maintenance Funds

Mornigstar has an article on Best Low-Maintenance Funds.

Technorati Tags: ,

Tuesday, March 22, 2005

Technorati Tags:

Using Technorati Tags you can attach a category to your blog entry.

The basic concept is to add a href with rel="tag" with the url ending in /tag/Category.

Read an introductory article by Improbulus.

Hopefully I'll start using it and add these tags too all my posts.

Technorati Tags:

Semantic Web

UMBC Sematic Web Reference Card is a handy cheat sheet for common RDF/RDFS/OWL classes and properties, popular namespaces and terms, XML datatypes, reserved terms, grammars and examples for encodings, etc.

Swoogle is a search engine for semantic web documents (rdf & owl). And if you need a cheat sheet for it, there is one.

And finally - an RDF Tutorial from Ivan Herman. Ivan has two beautiful overviews in SVG - for OWL and for RDFS.

Technorati Tags: , , , ,

Unicode Chart

Ian Albert has created a chart with all the unicode characters - as a 6 feet by 12 feet chart!

He got the images from the unicode web site. The chart is available for download via bittorrent. Be forewarned - its 100 MB.

Technorati Tags: , .

Thursday, March 17, 2005

Google Code

Google has released a few tools to the public.

The projects page lists the follwoing projects -

Libraries and tools that help you tune and debug your multi-threaded c++ programs.

Gives you the ability to dump cores from programs when it was previously not possible.

An assortment of interesting new hash tables for C++ developers.

This library brings functional language attributes to python.

Saturday, March 12, 2005

Genealogy Ontology

What are the main things that would be necessary to document genealogical information?

1) Details about people
2) Events in their life
3) Their relationships
4) And information about where one got that information from.

1) Person Details

This is the most basic of all genealogical data. We need to identify the individual before we can document or do any research about them. The basic information will essentially be their name, gender, hair color, occupation etc..

Apart from individuals we need to capture information about families. A family is a basic unit for a lot of genealogical information.

2) Events

Most infomation about an individual will be captured as "events" in their life. This could be BMD information, career information (for e.g. a promotion detail).

An event could be associated with a person or a family; it could be a natural event - like a tsunami, storm; it could be a battle or a war; it could be an accident or a ship wreck.

An event could have multiple persons involved in multiple roles - for e.g., father/mother/god-father/god-mother/chaplain/self in a christening event.

An event could be a standalone event (change in a person's name), it could be a group event (battles in a war), it could be associated or a consequence of another event (birth/baptism, engagement/marriage, death/burial).

An event will be associated with a time. The time could be exact (Tom was born on Jan 1, 1763 at 3 pm), it could be approximate (Harry was born circa 1800), it could be a range or it could be relative to another event (one day before Easter 1985, got married when he was 25 years old). The data could also be partial - for e.g., Paula was born on Jan 25th. The time could be captured in different calendars - for e.g. Gregorian or Lunar Calendars.

An event will be associated with a location. The location could be captured by geographic or geo-political details. Note that the geo-political information would be time specific - since it could change over centuries. The location could be relative (near London, north of Delhi).

3) Relationships

Most of the relationship information will be captured indirectly as events. The spouse information will be captured as a marriage event; the parent-child and sibling relationship in a birth event.

Sometimes an event information may not be available for a relationship. For e.g., we might know that John is Joan's cousin, but have no information about the details of the relationship (is it paternal or maternal? who is Joan's father?). Also we might know that Patricia is Robert's youngest daughter - but have no idea is she's his youngest child (did thay have a son after her?) or how many siblings did Patricia have. Similarly we might know that Peter is Maurice's 3rd child, but have no idea about the remaining children. Or that Yin was Yang's grandfather - with no information about the parents.

Relationships will also capture relationship between person records or families (or even event records!) - it could state that person "Robert Smith" is the same person as "Robert Henry Smith".

4) Source

This is another critical data for genealogical information. An information is useless unless we know its source and authenticity.

A source could be a physical document - a book, manuscript, an official certificate or a will, a genealogical magazine, newspaper; it could be by word of mouth. It could be from a web site; or from an email. It could be a primary source (government certificate), a transcription or could be hearsay. It could be a photograph, a sound recording or a video.

Whenever a source is cited, its better to specify where in the source was that information found - which chapter, which page, which para, which volume, edition etc. In the case of physical documents, the location also must be captured (for e.g. NYPL).


Most genealogical information can be documented as statements. These statements can thus be stored as triples.

The ontology must, ideally, be able to handle some non-genealogical data - which would give more meaning or context to genealogical information. For e.g., it should be able to capture that Cawnpore and Kanpur are the same place - named differently at different times. Also that Mangalore belonged to the Madras Presidency during the Colonial period and now belongs to South Canara district within the Karnataka state in India.

Another example would be information like relationship between names (Rob is the shortform for Roberts, as is Bob) and that Robert is typically a guy's name.

Also details about the military - the battalians, the ranks and their orders. The locations in which a divison was posted.


It should also be able to capture and identify assertions. For instance if a person's birth details are not available, but in the marriage record the person's age is mentioned it would be possible to determine the person's approximate date of birth. This assertion can be captured and it should be possible to specify the source(s) of the assertion. The source of an assertion to could be another assertion(s). Another e.g., is the assertion that William's gender is male - based on the name.

It should be able to assign a degree of confidence to an assertion.


After reporting on DOAP (Description of a Project) a couple of months back, I've finally created DOAP file for my projects - Matra and Kaprekar.

Tuesday, March 08, 2005


I downloaded a software sometime back and when I ran it I got the following error:

Exception in thread "main" java.lang.UnsupportedClassVersionError: <Class Name> (Unsupported major.minor version 48.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at Source)
at Source)
at$100(Unknown Source)
at$ Source)
at Method)
at Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

This happened since my default java version is 1.3 and not 1.4 - which was the version that the above application required.

Wouldn't it be nice if one could capture this in the application and display a better message to the user - stating "You need JDK Version x.y" to run this application?