In his book '3001', ArthurCeeClarke describes a UniqueIdentifier system for people, where the identifier consists of date of birth and a six-digit number; the number is simply a serial number issued to people born on that day. So, 2061-04-29-762182 identifies the 762182nd person to be born on the 29th of april 2061 (of course, the serial numbers needn't be strictly chronological - a central registry would issue blocks of, eg, 10 000 to continental registries, which would then issue subblocks of, eg, 100 to local registries, which would then issue numbers, all on demand). This works as long as there are no more than 1 000 000 people born on any one day. According to http://news.bbc.co.uk/hi/english/world/newsid_471000/471908.stm, three babies are born every second; that's about 259 200 per day, so there is a comfortable margin in there. The great strength of this system is that it is easy to remember your own number - everyone remembers their own birth date, and a six-digit number is not too hard to remember if you use it a lot (think of your phone number). In Clarke's vision, this identifier was used for all identification purposes, including communications (so it works as your personal phone number and email address), so people would have good cause to remember it. It may not be so easy to remember other peoples' numbers, but that's why we have address books. A variant on this system (which might be more user-friendly and more practical in a heterogenous world like ours) uses a shorter number part, but prefixes a registry identifier to the front; the simplest registry identifier scheme would be two-letter country codes. The example above might thus become CH-2061-04-29-2342 (our anonymous hero is Swiss). However, megastates such as India and China present a difficulty to this system, as they have such huge numbers of births that they still need a five-digit code, so the simplicity gain is modest. Possible solutions include splitting megastates into several registries (eg C0-C9 for China and I0-I9 for India) or using numbers of variable length (so it's a number and not a digit string). People sometimes criticise publicly-known personal UniqueIdentifiers, on the grounds that if someone knows your number, they can impersonate you to the system. This is clearly bunk: if everyone's identifier is public, simply knowing an identifier is not sufficient for authenticating yourself, so the system will require more than just your identifier, just as computers require more than just your login name. The problem only arises in systems where the identifier was intended to be secret (like the SocialSecurityNumber). A more serious criticism is that the ClarkeIdentifier makes your birthday publicly known; the modified version also makes your nation of birth publicly known. In Clarke's shining future, of course, this does not matter, as there is no ageism or nationalism and everyone likes surprise parties. It might matter more in the real world. Oh, and this design has the Y10K bug (if you insist on fixed-size fields). ---- CategoryInvention