James Tauber

journeyman of some

blog > 2005 >

James Tauber's Blog 2005/09

What Does 'Relational' Mean?

I would guess that many people think that "relational" in "relational database" has to do with relationships between entities expressed via foreign keys.

I confess that's what I thought until I started reading Chris Date.

In fact, the term "relational" is a reference to the mathematical concept of a relation that I've touched on as part of the Poincare Project.

This fact was obscured to me somewhat by the fact that I've typically only dealt with binary relations but relations can be n-ary.

A relation is really just a subset of a cartesian product.

Consider the set of Employees at a company and the set of Departments. Which employees work at which departments can be expressed as a set of ordered pairs, a subset of the cartesian product Employees x Departments. In mathematical terms, this is a relation.

If we wanted to express, say, extension number as well, we could take as our relation a subset of the cartesian product Employees x Departments x Extensions. This relation is just a set of tuples.

This is the sense in which "relational" is used in "relational database".

In SQL, tables almost correspond to relations and rows to tuples. I say almost because SQL violates the relational model in allowing duplicate rows.

by James Tauber : Created on Sept. 28, 2005 : Last modified Sept. 28, 2005 : 0 comments (permalink)

William Bardon Takes the Lead In Category IV

William Bardon just submitted two entries in Category IV of the programming competition that beat the reigning champion, Mark Ellison.

by James Tauber : Created on Sept. 26, 2005 : Last modified Sept. 26, 2005 : Categories programming_competition : 0 comments (permalink)

Coding Weekend

This weekend is the first weekend in a long time where I have the opportunity to do some solid open source coding.

So I've decided that's what I'm going to do. I have a particular standards-based project in mind that I'm starting largely from scratch but will hopefully be usable by Monday.

I won't say much more now other than to say that (i) it's pure Python; (ii) it's relevant to Leonardo and will probably be folded into (or at least used by) Leonardo at some stage.

I'll post more as I progress.

UPDATE (2005-09-24): Spent yesterday afternoon and evening implementing a library for parsing, manipulating and generating one format. Have spent today implementing the less mature protocol that goes with it. Might not finish the second part tonight but by the end of the weekend I should have a working system that can participate in interop testing with others. Currently at 2000 lines of Python code and 88% code coverage on the unit tests.

The software will be called DEMOKRITOS so no prizes for guessing what I'm implementing :-)

UPDATE (2005-09-26): By last night I'd got to the point where I had a working Atom Store with support for generic collections. It won't take too much work to finish off support for atom entry collections. I should be able to do a release in the next couple of days for interop testing although, without authentication and authorization, it won't really be usable in the "real world" just yet.

by James Tauber : Created on Sept. 23, 2005 : Last modified Sept. 26, 2005 : 5 comments (permalink)

Microsoft blames Sun

This crash analysis message seen in a colleague's browser gave me a chuckle.

by James Tauber : Created on Sept. 23, 2005 : Last modified Sept. 23, 2005 : 0 comments (permalink)

Number of Connected One-Dimensional Manifolds

The current Wikipedia article on Manifolds says that:

  • The open interval (0,1) is a one-dimensional manifold without boundary.
  • The closed interval [0,1] is a one-dimensional manifold with boundary.
  • Every connected one-dimensional manifold is homeomorphic to one or the other of these.

I'm confused by the third statement as I would have thought that the half-open interval (0,1] and the circle are both connected one-dimensional manifolds but that neither of them are homeomorphic to either the open or closed intervals.

What am I missing?

UPDATE (2005-10-03): Looks like the Wikipedia entry is, in fact, wrong in making the third statement above.

UPDATE: next post

by James Tauber : Created on Sept. 22, 2005 : Last modified Oct. 2, 2005 : Categories poincare_project : 9 comments (permalink)

New Leader in Programming Competition

Mark Ellison (who has just started blogging at rip-roaring pace) submitted entries in each category of my programming competition and completely blitzed the competition. See the results!

His algorithm rivals what I've been able to achieve with simulated annealing.

by James Tauber : Created on Sept. 20, 2005 : Last modified Sept. 20, 2005 : Categories programming_competition : 1 comment (permalink)

The Naming of Musical Notes, Part II

In Part I, we saw that the key signature in modern music notation supports 15 major keys although only 12 are usable at a time if one wishes to avoid enharmonic scales. Here are the 15 with the 12 that Bach used in the major key preludes and fugues of his Well-Tempered Clavier in bold.

C# F# B E A D G C F Bb Eb Ab Db Gb Cb

Note that C#, F# and B are no more preferable than Db, Gb or Cb. A choice of 12 of the 15 will always include E, A, D, G, C, F, Bb, Eb, Ab but 8 combinations exists for choosing C# versus Db, F# versus Gb and B versus Cb. Mind you, one would probably be unlikely to choose Gb over F# if they had not also chosen Db over C#. That would mean having a 4-flat and a 6-flat but no 5-flat. So, in practice, a composer choosing 12 major keys from the 15 possible would probably choose either C#-Ab (as did Bach), F#-Db, B-Gb or E-Cb.

But we are still missing some enharmonic alternatives. Each of the seven letter names can appear with a sharp or flat (or nothing) and that gives us 21 note names:

Ab A A# Bb B B# Cb C C# Db D D# Eb E E# Fb F F# Gb G G#

In particular the following are not from amongst our major key candidates:

G# D# A# E# B# Fb

If we have a look at our minor key signatures, the following are missing:

E# B# Fb Cb Gb Db

These are acceptable note names, they just can't be (major and minor, respectively) keys. Why not? Well a clue is in the fact that we've already seen the keys that have up to 7 sharps or 7 flats. Given there are 7 distinct note names in an octave, we've run out of notes we can make sharp or flat!

C# major, for example, already sharpens all 7 letter names. What would G# do?

The C# major scale has the following notes:

C# D# E# F# G# A# B# C#

Note that even though there are alternative enharmonic spellings of these notes when considered in isolation, in the context of the C# major scale they must be spelt as above.

This is because only one note can use each letter name. Furthermore, even though the notion of a double-flat or double-sharp is available for individual chromatic notes in a piece, the diatonic notes of a scale are restricted to natural, flat or sharp.

We'll explore these two conventions more in Part III.

by James Tauber : Created on Sept. 15, 2005 : Last modified Sept. 15, 2005 : Categories music_theory : 4 comments (permalink)

New CEO at mValent

I don't often blog about work, but I'm delighted to now be able to announce that mValent has a new CEO, Joe Forgione. I haven't met him in person yet but I'll get a chance on Friday when I arrive at the US office.

It's exciting times at mValent with a major release just around the corner and a veteran chief executive ready to take us to the next stage of the company's growth.

by James Tauber : Created on Sept. 13, 2005 : Last modified Sept. 13, 2005 : Categories mvalent announcements : 0 comments (permalink)

Approaches to Tracking Vocals

Had a final recording session with Nelson before my next trip to the US.

One issue we often wrestle with is whether to do full-song takes or per-section takes.

I think the following might work well for us:

  • do a few rough full-song takes with Nelson free to improvise and embellish
  • listen to the song with those takes for a while (weeks) to see what variants we like (really needs to be done a distance from the recording session so we're hearing the song more like a normal listener does)
  • come together and review what bits we like / didn't like
  • do per-section takes to get each section sounding the way we liked best

I'll try this approach with a few more songs and see how it works out.

by James Tauber : Created on Sept. 11, 2005 : Last modified Sept. 11, 2005 : Categories record_producing_and_engineering : 0 comments (permalink)

Old Classical Piece of Mine

I've never made any of my classical music available on the web and I thought now is as good a time as any. Here's an MP3:

Divertimento for Three Clarinets — First Movement

I wrote this piece in 1988-1989 at the height of my study of and love for the music of Mozart. I was fifteen at the time and this is probably the best piece I wrote while at high school (which isn't saying much—there is a reason most composers retract their juvenilia.

The MP3 above is a realisation in Logic Pro using the Garritan Personal Orchestra samples. The piece has never actually been performed with three clarinets. It had one public performance—in Canberra at the National Science Summer School that I attended in early 1990. The performance there was with a flute, violin and another violin restrung as a viola.

by James Tauber : Created on Sept. 10, 2005 : Last modified Sept. 10, 2005 : Categories music_composition : 9 comments (permalink)

Update

Only a couple of posts in the last two weeks. I think that's the worst blogging drought I've had in a long time (maybe ever!)

Here's a quick update:

  • things have been very busy at work
  • I'm getting ready for another trip to the US (a short one this time)
  • Bryan Lawrence and Dave Warnock are getting back into Leonardo (awesome!)
  • Nelson and I have been doing some recordings (Logic Pro for the instrument tracking, Pro Tools for vocals and mixing)
  • work on MorphGNT is progressing nicely with another release coming soon

by James Tauber : Created on Sept. 10, 2005 : Last modified Sept. 10, 2005 : 0 comments (permalink)

Font Fallback

When Safari encounters a character not available in the current font family, say Ὦ, it attempts to find another installed font family that has the character and uses that. It seems most, if not all, OS X applications have this property.

When Internet Explorer on Windows encounters a character not available in the current font family, it just gives up and displays a square. At first I thought this might be Windows in general, but Firefox on Windows has the same behaviour as Safari on OS X.

So it's just IE.

I'd be interested if anyone other than IE users on Windows gets a square here: Ὦ

by James Tauber : Created on Sept. 3, 2005 : Last modified Sept. 3, 2005 : 5 comments (permalink)