Older blog entries for cbbrowne (starting at number 0)

Lately, I've been involved with discussions surrounding the representation of commodity values for the GnuCash project.

The "problem" is thus:

  • People want to track various different commodities, including money, in multiple currencies.

    I, for instance, have bank accounts in both the United States and Canada, in the relevant currencies.

  • People want to track stock portfolios, that introduce all the varying sets of stock commodities.

    The PROBLEM is that these are all denominated in different terms. Dollar amounts usually are decimal fractions in units of 1/100 dollars. Stocks often are represented as integer quantities, although sometimes you can wind up with fractional shares. Mutual fund unit quantities tend to be represented as decimal fractions in units of 1/1000 or 1/10000 shares. In some cases, things are denominated as fractions based on 16ths or 64ths.

That briefly characterizes the "quantity" issue.

But then there is the "price" issue. You join together two commodities, and have some translation ratio, say for translating US dollars to CDN dollars, or for translating RHAT stock to $USD.

There has been a great "flame war" over this; there is some desire to have a "grand, unified quantity data structure," although that seems to me to be a bit unrealistic, as the denominator is always based on the nature of the commodity, which isn't part of the quantity.

Once the roar settles down, the "Grand Unified Data Structure For Prices" is likely to fall out of this in a reasonably natural way.

Note that floating point values are not well suited to this, as FP isn't TOTALLY stable...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!