2015-06-26 update: Obergefell v. Hodges: the database engineering perspective
- en Italiano
- Liz Howard adapted this essay as a talk for DevFest Silicon Valley! Here are the slides.
There are various objections to expanding the conventional, up-tight, as-God-intended "one man, one woman" notion of marriage but by far the least plainly bigoted ones I am aware of are the bureaucratic ones.
To be blunt, the systems aren't set up to handle it. The paper forms have a space for the husband's name and a space for the wife's name. Married people carefully enter their details in block capitals and post the forms off to depressed paper-pushers who then type that information into software front-ends whose forms are laid out and named in precisely the same fashion. And then they hit "submit" and the information is filed away electronically in databases which simply keel over or belch integrity errors when presented with something so profound as a man and another man who love each other enough to want to file joint tax returns.
Speaking as a computery-type person, altering the paper forms is not my department. It's probably expensive and there are probably millions of existing incorrect forms which would need returning or recycling or burning instead of using. Or maybe it's simple. I don't know. The real question from my perspective is how you store a marriage in a computer.
Altering your database schema to accommodate gay marriage can be easy or difficult depending on how smart you were when you originally set up your system to accommodate heterosexuality only. Let's begin.
Note: By popular demand, this problem is now known as "Y2gay".
Note: this essay refers exclusively to government-recognised legal civil unions. Religious organisations are of course able to create, recognise and annul any wacky religious unions they can think of.Churches need databases too.
One
Let's start with a few really dumb systems which nobody with a brain cell would ever use. How about this?
males-id-forename-surname-birthdate-wife_id(foreign key references columnfemales.id, may be NULL if male is unmarried)females-id-forename-surname-birthdate-husband_id(foreign key references columnmales.id, may be NULL if female is unmarried)
Great! Everybody is either married or unmarried and it's dead easy to see who is married just from a database lookup. A simple JOIN will give you the husband or wife.
Problem? Potential for contradictions. Duplication of information. If Male 45 (Jeff) has wife_id 699 then Female 699 (Elizabeth) must also have husband_id 45. What if she has NULL husband_id? Or, even better, has husband_id 1078 (Jeff's younger brother)? Oh, imagine the hilarity.
Two
Believe it or not, this is actually a fractionally less stupid database schema.
males-id-forename-surname-birthdate-wife_id(unique foreign key references columnfemales.id, may be NULL if male is unmarried)females-id-forename-surname-birthdate
This reduces the scope for ambiguity but it has suddenly become eye-poppingly sexist. Plus, what if you want to store information pertaining to the marriage itself? Like, the date it began?
Three
males-id-forename-surname-birthdate-wife_id(foreign key references columnfemales.id, may be NULL if male is unmarried) -marriage_date(may be NULL if male is unmarried)females-id-forename-surname-birthdate
Okay, but what if they get divorced?
Four
males-id-forename-surname-birthdate-wife_id(foreign key references columnfemales.id, may be NULL if male is unmarried) -marriage_date(may be NULL if male is unmarried) -divorce_date(may be NULL if male is unmarried or married but not yet divorced)females-id-forename-surname-birthdate
Okay, but what if there's LOTS of information about the marriage? Like where it took place, who witnessed it, details of the licence? I have not been married but I'm sure the administrative tangle is quite large. All those extra fields would be attached to the males table, unless they were NULL. Wouldn't it be better to store marriage-related data in a dedicated table?
And the divorcees might each get married again! You'll still want to have that marriage on record, alongside the new one(s)! Completely erasing anything is a bad idea.
Five
males-id-forename-surname-birthdate-marriage_id(foreign key references columnmarriages.id, may be NULL if male is unmarried)females-id-forename-surname-birthdate-marriage_id(foreign key references columnmarriages.id, may be NULL if female is unmarried)marriages-id-marriage_date-divorce_date(NULL if marriage not ended)
This isn't quite so stupid as it could be. We are finally getting somewhere. Personally, I don't like NULLable foreign key columns so you could equally well go with:
Six
males-id-forename-surname-birthdatefemales-id-forename-surname-birthdatemarriages-id-husband_id(foreign key references columnmales.id) -wife_id(foreign key references columnfemales.id) -marriage_date-divorce_date(NULL if marriage not ended)
This makes slightly more sense. The marriages table can have much more information stored in it while males and females have all their own information in the logical place too.
Of course, the entire system is still profoundly stupid/sexist. Men and women are equal, correct? Then, any database column which the table males could need would be needed in the females table. More practically, this in turn means that all the application logic for any given person has to be bashed out twice, once for if the person is female and once for when they're male. Or at the very least a switch of some kind has to be incorporated to address the correct database table, and any change to one table must be reflected precisely on the other, and any additional table in this hypothetical database needs to be capable of referencing two different tables depending on the gender of the person being referenced, and so on...
It's asinine to do it this way. However, there is a good reason why I haven't just skipped schemas schemae schemata One to Six. There are a lot of people in the world who actually think like this. This is their for-real, no-joking conception of "marriage". They do not grasp that men and women are interchangeable, as a result of which homosexual marriages create repulsive integrity problems in their heads. "But if they're both guys, which one is the wife? Does not compute!" How sad.
Seven
humans-id-forename-surname-birthdate-sex("male" or "female")marriages-id-husband_id(foreign key references a male in columnhumans.id) -wife_id(foreign key references a female in columnhumans.id) -marriage_date-divorce_date(NULL if marriage not ended)
Finally we are reaching something which is non-stupid and non-sexist enough that it might actually exist somewhere in reality. This schema is reasonably sensible assuming you live in a fairly God-fearing administrative district. There is actually a slight disadvantage from the previous schema in that to enforce a one-man-one-woman marriage, you would have to have some application logic to ensure that each husband_id doesn't point to a female and that each wife_id doesn't point to a male.
(And, I guess, you would also need to ensure that no married male changes to female, and that no married female changes to male. Or, if you were feeling nasty, that nobody ever changes sex at all. More on this later.)
Up until this point, implementing gay marriage in your schema has been remarkably difficult. But what we now have is different. To allow men and women to marry men and women respectively, all you actually have to do is remove those application-layer checks. For the sake of politeness you would most likely rename the database columns, too:
Eight
humans-id-forename-surname-birthdate-sex("male" or "female")marriages-id-partner_1_id(foreign key references columnhumans.id) -partner_2_id(foreign key references columnhumans.id) -marriage_date-divorce_date(NULL if marriage not ended)
With the advent of gay marriage, however, we have a new problem. What we have now allowed is any human to marry any human. Note the conspicuous absence of the word "other" in that sentence. Marriage is a binary relation. You can't marry yourself.
Why not?
...Good question. Most would answer "this is obviously stupid" but "obvious" means "an answer springs to mind immediately" so here is mine.
To answer this you would have to step outside the database engineering scope of this essay and look at the rights and privileges that marriage confers on a human being. There are legal benefits, such as being able to visit your dying spouse in hospital or acquire power of attorney over them. These would obviously be pointless if you were your own spouse. But there are also tax breaks, which are obviously intended to benefit people - plural - who are actually committed to one another on a legal/dwelling/property/assets/children kind of level. For you to marry yourself confers no such commitment and is obviously just a tax scam. So yes-- marriage is binary. (Or, at the very least, not unary. Mathematically, "irreflexive". More on this later, too.)
So, after removing the "husband and wife" limitation, you would actually have to add in a check constraint or some new application logic to ensure that people didn't marry themselves. It would almost never be called upon but it would have to be in there, somewhere. This minor programming challenge is actually our largest obstacle.
Nine
Of course, we live in the twenty-first century, and in the words of Eddie Izzard, "there's gonna be a lot more guys with makeup during this millennium". Basically what I'm talking about is your non-conventional people, your non-male-non-female folks. Just having sex as a "male or female" choice is as short-sighted as having "marriage" as a "husband or wife" choice. You may need something like:
humans-id-forename-surname-birthdate-sex_id(foreign key references columnsexes)marriages-id-partner_1_id(foreign key references columnhumans.id) -partner_2_id(foreign key references columnhumans.id) -marriage_date-divorce_date(NULL if marriage not ended)sexes-id-string
...where the latter table would contain such well-known sexes as "female", "male", "intersexed", "not stated" and leave room for juggling later, since gender roles will doubtless become more non-trivial as time passes.
In fact, the whole "gender"/"sex" thing is more complicated than this. As we all (should) know, "sex" is a strictly biological term referring primarily to the shape of the organs between your legs while "gender" is more of a mental identity or social role term, so let's include that too:
Ten
humans-id-forename-surname-birthdate-sex_id(foreign key references columnsexes) -gender_id(foreign key references columngenders)marriages-id-partner_1_id(foreign key references columnhumans.id) -partner_2_id(foreign key references columnhumans.id) -marriage_date-divorce_date(NULL if marriage not ended)sexes-id-stringgenders-id-string
...where the latter table would again include "male", "female", "not stated", "undecided" and whatever else this brave new century throws at us...
Wait a second. Isn't the whole point of this exercise to demonstrate that your shape is irrelevant to who you can marry? Drop those fields entirely!
Eleven
humans-id-forename-surname-birthdatemarriages-id-partner_1_id(foreign key references columnhumans.id) -partner_2_id(foreign key references columnhumans.id) -marriage_date-divorce_date(NULL if marriage not ended)
Better.
As an aside, I have actually considered that laws against (or implicitly disallowing) gay marriage are, actually, sexist. For example, suppose I lived somewhere with antihomonuptial legislation. As I am a man, any woman in that district has the right to marry me. (As well they should.) But any man in that district who wanted to marry me does not have that right. The women have a right which the men do not have. Likewise, if there was a nubile woman nearby, I (and any other man) would have the right to marry that woman. But any nearby woman would not have that right. The men have a right which women do not have. Sexist!
Anti-gay-marriage laws throw a very real legislative dividing line between two sets of people on the world, and say, "all marriages must cross this line". But any law which divides men from women is clearly sexist, and, as I've stated above, closed-minded towards unconventional gender assignments who don't clearly fall on either side.
Speaking as a database engineer, the partner_1_id and partner_2_id fields make me feel edgy. I've worked on databases with an email_1 and an email_2 for primary and secondary email addresses and to me, these field names are just crying out for a third addition. And a fourth. And, ultimately, the capacity for arbitrarily many email addresses. Each time a new address is added the application logic ramps upwards in complexity because of the number of checks which have to be made ("So you're trying to enforce uniqueness of email addresses? Well, I hope you remember to check email_1 against email_2 and email_1 against email_3 and email_2 against email_3...")
This is a check which hasn't even been mentioned yet. You have to ensure that each individual is only involved in one marriage. You can't have Jeff married to Elizabeth and Elizabeth also married to Bob. And you have to be careful about it. You have to make sure Jeff is either partner_1 OR partner_2 in at most one marriage. You even have to check for things like Jeff being married to Elizabeth and simultaneously Elizabeth being married to Jeff! This would be two separate marriages! That's not allowed.
Why not?
Twelve
...A very good question.
Let's take it slowly.
Polygamy.
For a marriage to involve precisely two people is as closed-minded as marriages involving people of opposing sexes. Why shouldn't a marriage involve more than two people? Admittedly, it's highly unconventional, and the sheer psychology of mere trigamy is highly complex; you have to be special to make a polymarriage work. But special people are out there and they have made it work so why not codify this legally? And electronically?
Here, "legally" is actually the biggest stumbling block. I think it would be accurate to say that much more of the existing global "legislatosaurus" is implicitly or explicitly geared towards binary marriages than is geared towards heterosexual marriages. This is not a case of changing a few words in the laws. It would be a case of radically modifying a very large chunk of law. The possibility for legal loopholes and general lack of airtightness would be major. And all of this would be in order to accommodate the legal needs of an admittedly tiny minority of people. I think it should happen (in the places where it hasn't), and the arguments against it are no better than the arguments against gay marriage, but the obstacles are larger.
But anyway. IANAL. IAADBE.
humans-id-forename-surname-birthdatemarriages-id-marriage_date-divorce_date(NULL if marriage not ended)marriage_partners-id-human_id(foreign key references columnhumans.id) -marriage_id(foreign key references columnmarriages.id)
On paper, this would be a relatively straightforward table to create and populate. (In practice? Hahahah.) This schema effectively creates "blobs" (not the database engineering Binary Large OBjects) of people who are all collectively married to one another. Each human is a member of at most one marriage. This can be easily enforced at the database level by making marriage_partners.human_id into a unique key. A marriage could have any number of members; no coding would be needed to enforce this.
To prevent people doing the old "unary marriage trick" and marrying themselves - or, in this model, creating a single-human marriage blob - you would need to ensure that each marriage had at least two members, and this last thing would be the only major problem of application logic.
Cool. Great.
Assuming that marriages are static in population.
Here we run into a perfectly typical problem of adapting "2 things" to "N things". Up until now, Jeff and Elizabeth were either (A) married or (B) not married. If the marriage between them became annulled, (A) goes to (B). But now we can have a situation where a marriage blob is formed with Jeff and Elizabeth... then Bob may join them both at a later date. What do we put for a marriage date there? What if Bob then divorces the other two, but Jeff and Elizabeth stay together?
This would be easily done in practice. Simply have the original marriage-of-two marked annulled. Then create a new marriage-of-three starting from the same precise date. And when someone leaves, annul the marriage-of-three and create a new marriage-of-two. But it feels like a hack and it seems to be legally complex. At the end of it, Jeff and Elizabeth have technically had three marriages each despite staying civilly unified for a continuous period, and their current one is maybe years younger than it should be. Yikes!
Can we accommodate this?
Thirteen
humans-id-forename-surname-birthdatemarriages-idmarriage_partners-id-human_id(foreign key references columnhumans.id) -marriage_id(foreign key references columnmarriages.id) -marriage_date-divorce_date(NULL if still in marriage)
This schema is much more sophisticated. A marriage blob is formed. Initially, at least two people, Jeff and Elizabeth, are members - this would be enforced at the application logic level. They have rows in the marriage_partners table. As time passes, Bob joins, creating another row in the marriage_partners table with the same marriage_id. He may then leave, inserting a divorce_date. He may even join again: this would be a new marriage_partners row entirely. He would have had two discontinuous marriages, though they would involve the same people. Then Elizabeth might leave. She would only have one marriage_partners row listed, and so, technically, would only have one marriage to her name. Jeff and Bob would be left behind. And finally, neither Bob nor Jeff could leave individually; both of them would have to leave the marriage blob simultaneously. Again, this would have to be enforced at the application logic level.
(And of course you would need to ensure that at any given moment in time, each person was a member of only one marriage. ...Right?)
Pretty sneaky, sis!
I can still imagine some potential complications - for example, what if Bob and Jeff were involved in one marriage, and Elizabeth and Daphne were involved in another, and then Jeff decided to marry Elizabeth? You would need to provide for some way for Daphne to be "pulled over" to join Bob and Jeff's marriage too. Or for Bob to be "pulled over" and joined in with Elizabeth and Daphne's marriage too. Or, for equality's sake, for all four of them to dissolve their current marriages and join an entirely new, four-person marriage blob.
Again, you could hack it, but you would really have no choice but to introduce arbitrary, instantaneous temporary divorces into the system. And it would be unavoidable that there would be no continuity. At least one, and possibly both, of the original marriage blobs would be ended permanently in the merger. Because marriage is not just an irreflexive binary relation; it's a transitive, irreflexive, binary relation. If Jeff is married to Elizabeth, and Elizabeth is married to Bob, then Jeff is married to Bob.
Right?
Fourteen
(Hell's bells, he's still going.)
The legal ramifications of what I'm about to describe are unguessable. I have no idea what rights a civil union like the ones which would be possible below would have, nor do I have any idea what kind of transhuman universe would require so complex a system. This is the marriage database schema to take us up to the thirty-first century, people.
Right. Intransitive marriage.
humans-id-forename-surname-birthdatebinary_marriages-id-partner_1_id(foreign key references columnhumans.id) -partner_2_id(foreign key references columnhumans.id) -marriage_date-divorce_date(NULL if still married)
In a transitive marriage, everybody is married to everybody else.
A transitive marriage is begun by creating a binary link: Jeff to Elizabeth, say.
Bob can join this transitive marriage simply by simultaneously marrying them both. Bob marries Jeff (new binary_marriages row) and marries Elizabeth (new binary_marriages row). Bob could then leave the transitive marriage (marking both rows "divorced") and then join it again (creating two new rows).
If Daphne and Charles - themselves married - joined the transitive marriage, Daphne would have to file paperwork marrying Bob, Jeff and Elizabeth, and Charles would also have to file paperwork marrying each of Bob, Jeff and Elizabeth.(This would be troublesome, but these larger marriages are exponentially less likely to occur...)
But that doesn't have to happen. Daphne could just marry Elizabeth. And that would be that.
What we end up with is a thing called a graph. A graph is a mathematical object consisting of a set of points (people) and a set of lines (marriages), each connecting two points. Up until now we have assumed that all points are either red (male) or blue (female) and all lines (marriages) must join a red point (husband) to a blue point (wife). Since then, we have acknowledged the existence of other colours (intersexed people and the like) and gone on to acknowledge that the colour of the points (sex of the partners) is irrelevant and that lines (marriages) may connect any two points (people) regardless of colour (sex).
We then realised that allowing each point (person) to connect to only at most one other point (marry one other person) is limiting, and now allow literally any combination of lines (marriages) to connect points (people) in any shape imaginable. A traditional binary marriage is still the most common figure. A triangle (three people all married to one another) pops up occasionally. But, in theory (and the database allows this), any binary marriage or triangle or square or any shape at all can connect with any other shape. Line segments (marriages) can appear and disappear (begin and end) at any time.
The fact that we still have a partner_1_id and a partner_2_id is still edgy, but the reason for this no longer exists. We are no longer limited to binary marriages since, clearly any conceivable combination of married people can be created using a combination of binary marriages.
We would still need a little application logic, of course, to ensure that nobody marries the same person twice at the same time. Because, of course, you can't be double-married.
Without loss of generality, you could make it so that the partner_1_id is a lower number than the partner_2_id. This would make searches easier. Because the order of the partners doesn't matter. Marriage may be many things, but it is certainly symmetric: if Jeff is married to Elizabeth, then Elizabeth is married to Jeff. Right?
Afterword
Well, that started as a stream of consciousness about equal parts nuptial rights and Structured Query Language and finished up moving into graph theory, something I, for one, did not see coming. Asymmetric - or, I guess, unequal - marriage, in which one partner is considered legally, somehow, lesser than the other (perhaps Jeff would receive Elizabeth's property if she died, but not vice versa?), sounds like a logical progression on the theme to me one minute, and a recipe for a renewed and hardy breed of institutionalised sex discrimination the next. In fact, thinking about it, even intransitive marriages would most likely be susceptible to this.
Perhaps the simplest solution would be to ban marriage outright. Or, better yet, to declare everybody as married to everybody else. But then what would the database engineers do all day?
Final thought
The real crime is that I'm not allowed to marry my database.
Afterword II, 2014-01-31
Looking back on this article, it seems to me that there is a more important message.
No matter how advanced and flexible your table structure, it will always be possible to create data which cannot fit into it. At that time, you will need to change your database. And the longer it's been since you did, the less pleasant that's going to be.
The lesson is not "prepare for every possible eventuality". The lesson is to become comfortable and confident in modifying your schemata without losing data, and rolling back botched changes. Do this regularly, so that it becomes second nature. The lesson is to get used to change.
And what is true of our databases is also true of our world views. The future is vast and humans are creative. Things are going to happen which nobody could predict. It's going to be fun!


Discussion (168)
2008-11-21 01:08:23 by Isaac:
2008-11-21 01:54:02 by Artanis:
2008-11-21 01:59:23 by Jake:
2008-11-21 10:38:07 by DavidMacIver:
2008-11-21 11:37:53 by Eddy:
2008-11-21 11:45:59 by Steve:
2008-11-21 12:07:46 by Eddy:
2008-11-21 12:49:03 by qntm:
2008-11-21 12:53:51 by lol:
2008-11-21 12:53:57 by pozorvlak:
2008-11-21 13:18:08 by qntm:
2008-11-21 14:48:07 by Slacko:
2008-11-21 15:05:46 by Hank:
2008-11-21 15:14:41 by qntm:
2008-11-21 15:43:21 by Russ:
2008-11-21 16:07:08 by Peter:
2008-11-21 16:43:00 by Oliver:
2008-11-21 17:02:18 by Will:
2008-11-21 17:05:42 by mmas:
2008-11-21 17:07:38 by Adam:
2008-11-21 17:20:20 by qntm:
2008-11-21 18:23:28 by Fabien:
2008-11-21 18:25:27 by qntm:
2008-11-21 18:45:15 by Ru:
2008-11-21 18:48:41 by Jerry:
2008-11-21 19:02:04 by StoneCypher:
2008-11-21 19:13:16 by Jake:
2008-11-21 19:17:00 by steve:
2008-11-21 19:17:47 by steve:
2008-11-21 19:32:28 by Anii:
2008-11-21 19:33:52 by Cat:
2008-11-21 19:36:42 by RichardBronosky:
2008-11-21 19:40:41 by RichardBronosky:
2008-11-21 19:47:59 by Doomsought:
2008-11-21 20:00:56 by qntm:
2008-11-21 20:53:30 by Paul:
2008-11-21 20:58:58 by ak:
2008-11-21 21:05:32 by Allan:
2008-11-21 21:11:38 by RowingBear:
2008-11-21 21:20:19 by cliedwar:
2008-11-21 21:23:29 by Ryland:
2008-11-21 21:26:30 by kentbrew:
2008-11-21 21:53:43 by Frick:
2008-11-21 22:04:19 by bikko:
2008-11-21 22:32:48 by Ryan:
2008-11-21 23:00:27 by Michael:
2008-11-21 23:08:34 by CJ:
2008-11-21 23:24:20 by GaryJordan:
2008-11-21 23:25:09 by gopi:
2008-11-21 23:26:06 by Art:
2008-11-21 23:28:50 by homo:
2008-11-21 23:43:26 by Artanis:
2008-11-22 00:01:24 by ardil:
2008-11-22 00:35:19 by Abraham:
2008-11-22 01:22:27 by IanOsmond:
2008-11-22 03:12:08 by Ganymede:
2008-11-22 03:50:26 by LachlanMcDonald:
2008-11-22 04:02:30 by Deekitten:
2008-11-22 04:05:48 by Sapiophile:
2008-11-22 08:57:22 by james:
2008-11-22 09:01:57 by jholman:
2008-11-22 14:35:34 by SteveB:
2008-11-22 15:16:53 by LarryAnderson:
2008-11-22 16:13:19 by Mick:
2008-11-22 16:43:22 by Jymbob:
2008-11-22 16:46:56 by Fabien:
2008-11-22 17:39:58 by Tom:
2008-11-22 19:21:15 by qntm:
2008-11-22 20:43:55 by adamo:
2008-11-22 21:00:49 by Andrew:
2008-11-22 23:16:00 by quantumkitty:
2008-11-23 02:21:09 by DavidGaramond:
2008-11-23 04:54:01 by bonniea:
2008-11-23 20:42:12 by PietroSperoni:
2008-11-23 20:57:48 by PietroSperoni:
2008-11-23 20:58:02 by charles:
2008-11-23 22:40:13 by Pancake:
2008-11-23 22:54:29 by Maggie:
2008-11-24 01:46:21 by Kay:
2008-11-24 01:47:42 by Kay:
2008-11-24 02:28:12 by ArmyOfAardvarks:
2008-11-24 04:48:18 by NovelDevice:
2008-11-24 14:07:19 by Noel:
2008-11-24 14:46:11 by Kitwench:
2008-11-24 16:14:19 by Jeff:
2008-11-24 16:38:36 by Charlene:
2008-11-24 23:39:40 by Daan:
2008-11-25 09:29:43 by NicholasWhyte:
2008-11-25 17:32:48 by maryhs:
2008-11-25 20:28:52 by YarKramer:
2008-11-25 22:51:04 by Richard:
2008-11-25 22:53:53 by Richard:
2008-11-26 08:47:48 by mhlekazi:
2008-11-28 05:32:40 by Amy:
2008-11-28 14:38:46 by Steven:
2008-11-28 15:44:57 by mildlydiverting:
2008-11-28 17:33:34 by Andrew:
2008-11-28 17:39:55 by PaulSkinner:
2008-11-28 21:33:27 by Logbuffer:
2008-11-28 22:02:24 by qntm:
2008-11-29 01:23:59 by Steve:
2008-11-29 09:22:42 by CJ:
2008-11-29 09:57:58 by Mark:
2008-11-29 12:58:32 by qntm:
2008-11-29 15:23:32 by CJ:
2008-11-29 20:38:39 by Jerry:
2008-11-30 02:05:26 by JoAnne:
2008-11-30 02:09:17 by JoAnne:
2008-11-30 22:22:47 by Gav:
2008-12-01 09:36:35 by viiviiviivii:
2008-12-01 15:07:28 by fsilber:
2008-12-01 18:12:08 by RioRico:
2008-12-01 21:08:43 by thetreeorthebear:
2008-12-02 05:48:51 by Ben:
2008-12-02 06:53:02 by Oblomov:
2008-12-02 18:15:32 by LeonardJ:
2008-12-02 19:27:53 by Dave:
2008-12-02 20:39:58 by Moose:
2008-12-03 15:57:21 by Raul:
2008-12-03 16:03:13 by qntm:
2008-12-03 18:08:49 by Tarot:
2008-12-03 18:31:42 by qntm:
2008-12-03 21:38:35 by Mick:
2008-12-04 14:08:21 by jaymie:
2008-12-04 18:20:44 by JonHanna:
2008-12-05 10:46:51 by leonardj:
2008-12-06 02:57:28 by townmouse:
2008-12-09 19:08:35 by Rory:
2008-12-12 23:02:10 by Letters:
2008-12-19 03:34:12 by eriqalan:
2009-01-10 18:44:33 by Dominique:
2009-01-21 18:37:39 by RichMest:
2010-03-11 16:39:31 by R:
2010-03-11 18:26:23 by MikeRoberts:
2010-03-11 21:35:07 by Pasha:
2010-03-11 21:45:50 by MikeWilliamson:
2010-03-11 21:54:34 by Alex:
2010-03-11 21:57:15 by GregWilson:
2010-03-13 06:52:32 by Liz:
2010-03-17 15:50:51 by Marc:
2010-03-22 12:48:43 by LP:
2010-03-31 15:29:00 by potto:
2010-04-15 03:08:23 by namesdonotonlyconsistofletters:
2010-04-15 07:17:48 by qntm:
2010-04-20 00:17:14 by Tantek:
2010-05-31 21:52:51 by Anonybot:
2010-06-03 19:47:16 by betabug:
2010-06-17 08:50:21 by Webdrifter:
2010-06-17 09:04:03 by Webdrifter:
2010-06-17 19:08:10 by RichardGaywood:
2010-07-09 19:13:20 by tom:
2010-07-31 09:32:46 by Abigail:
2010-08-03 02:59:05 by james:
2010-08-05 02:53:58 by Tiferet:
2010-08-06 03:04:16 by JustSomeone:
2010-08-10 13:50:25 by pinkgothic:
2010-09-25 22:07:02 by rs:
2011-01-11 17:36:54 by JPad:
2011-05-12 17:50:44 by TomAnderson:
2011-06-01 23:52:26 by TravisW:
2013-02-06 23:33:50 by Emilsson:
2013-03-18 18:15:47 by buni:
2013-09-22 06:42:05 by Mengmoshu:
2014-01-18 10:52:41 by Jhadur:
2014-02-14 20:29:11 by Wastrel:
2014-02-14 20:35:39 by Ursus:
2014-02-16 19:16:29 by Ric:
2014-02-17 03:49:34 by Wes Modes:
This discussion is closed.