1. 44
  1. 41

    It’s not just one-off custom database schemas, either: you’ll find assumptions about name structure built into various official standards too. OpenID Connect, for example, at least avoids the assumptions about positions of name components (“first” and “last” names) but still breaks names down into given, middle, and family components. That works for names in a lot of cultures, but it discards culturally-relevant information in some cases and forces people to map the parts of their names to concepts that don’t necessarily match reality. And woe unto you if you try to render these names with whitespace between the components: even if you get the order right, Chinese names don’t have whitespace and it’s just flat-out wrong if you insert it.

    My experience doing internationalization led me to the conclusion that for a lot of applications, you really want two name fields: “full name” (which is pretty much freeform text, whitespace allowed, name components in any order the user decides is correct) and “abbreviated name you want the software to use to address you.” Do full-text indexing of both, and most of the bases are covered.

    1. 16

      imo you should have username (for URLs and mentions if applicable, maybe limited character set if you must) and screen name (to show, freeform text, full unicode) and if you really need it, legal name. Don’t use legal name for anything you don’t absolutely need it for.

      1. 3

        It’s a good rule. Unfortunately the moment your sell anything you need the names and addresses… which legally makes sense, but it means any commercial service will need them.

        1. 4

          Then ask for a name for those purposes and don’t use it anywhere else.

          1. 2

            Yes, but for those you can either pass through this info directly, or if you want to save it for convenience later, just use an address table for that purpose specifically, that takes something looking like a proper address.

          2. 2

            Does that imply you just give up on having your software address people as [Salutation] [Family Name] in formal contexts? Mr. Smith, Mx. Xi, Dr. Doom, etc?

            1. 6


          3. 10

            I’ve worked on a site that has been created in Taiwan, and it had only a single field for name. As soon as the UK management took over, they demanded to split it into first_name and last_name. They could not imagine starting emails in any other way than Hello ${first_name}.

            1. 4

              First name: Queen
              Middle name: Elizabeth
              Last name: II

              What culture is that name from?

              1. 9

                I think her actual name is Elizabeth Alexandra Mary Windsor, with Queen (or rather, Queen of the United Kingdom and the other Commonwealth realms) as her title, and the “name” Queen Elizabeth II as a type of shorthand (and to distinguish between her and Queen Elizabeth I, who was actually Elizabeth Tudor). So her first name is “Elizabeth”, last name “Windsor”, title is “Queen” with (I think) the salutation of “Your Royal Highness.”

                I’m not sure where designators like “Jr.” or “IV” fit into the whole naming scheme—part of the last name? A separate part entirely? I’m not sure.

                1. 4

                  My (poor) understanding is that most members of the House of Windsor don’t have last names, but use it by convention. Prince William went by William Wales in the military (getting him the cool nickname “Billy Fish”), since his father is Prince of Wales. Prince Philip adopted Mountbatten when he became a UK citizen, but didn’t have one before that (being a Greek prince). Elizabeth is the head of the House of Windsor, so she’d probably use it, though.

                  1. 7

                    Like the blog post author, QE2 has a fake last name she just made up so there would be something to write on bureaucratic forms.

                    1. 4

                      She didn’t make up her last name, her great-grandfather did, having switched last names from Saxe-Coburg and Gotha.

                      1. 1

                        I was surprised to recently learn that St Petersburg became Petrograd during WW1 for much the same reason - anti-German sentiment in Russia.

                        1. 2

                          The name ‘Mountbatten’ mentioned a few replies up was translated directly from ‘Battenberg’ for the same reason

                    2. 4

                      Prince Philip adopted Mountbatten when he became a UK citizen, but didn’t have one before that (being a Greek prince).

                      Somewhat relatedly, the former King of Greece’s refusal to chose a surname like a regular citizen has been a point of dispute with the Greek government for a few decades, preventing him from getting a Greek passport.

                      1. 2

                        Fascinating. I know Charles I was referred to as “Charles Stuart” by his prosecutors at the time of his trial, and Louis XVI was referred to as Citoyen Capet after he was deposed as king. No doubt Elizabeth would be referred similarly during the coming revolution…

                      2. 2

                        I’m not sure where designators like “Jr.” or “IV” fit into the whole naming scheme—part of the last name? A separate part entirely? I’m not sure.

                        In the mists of time, X.400 email ORAddresses had a “generational qualifier” field for this purpose, so you’ll still see vestigial remnants of this in LDAP systems (LDAP is/was the “use TCP/IP to access X.500 directories” protocol, with X.500 directories being the “store everyone’s X.400 email addresses and favourite drink preferences as part of a heirarchical global directory”.)

                        For military/government procurement purposes, MS Exchange supported X.400/X.500-like behaviour, so you get stuff like:


                      3. 6

                        It’s a regnal name. I don’t know how the UK laws handle these, as well as noble titles such as “Earl of Whatever”, compared to the actual personal name.

                        I imagine the Queen would register as Elizabeth Windsor, and select the title “Queen of the United Kingdom” from the drop-down list.

                        1. 1


                      4. 13

                        What, nobody has (re)posted this yet?

                        Falsehoods programmers believe about names (with examples)

                        I actually did the “single field for full name, single field for what to call me” schema in a real system. Worked great until the moment it had to interface with any other system. Then it was either do some hacky regular expression to force a possibly-bad transformation into first/last, or give up and let the user pick their own least worst transformation.

                        My wife has only two names, one of which is hyphenated. Fun times.

                        1. 3

                          The very first link in TFA was a list of the same 40 falsehoods, without all the examples.

                          give up and let the user pick their own least worst transformation

                          That seems like the least bad approach, possibly pre-filling the results of your hacky regular expression-based guess as a suggestion for the user to edit.

                        2. 10

                          Names in databases really do suck. While we’re on the subject of broken schemas, I have a bone to pick with addresses too.

                          People who live in apartments frequently have to fill out the “address line 2 field” for an apartment/suite number, but some sites expect to jam it all into “address line 1” and will complain that it’s “too long”. I’ve also seen sites that will only let you specify a single number for the suite/unit when it should be freeform. Some sites will also force everything to be all caps, which isn’t more correct than what I input. Even USPS does some of this stuff, as well as classifying addresses into “commercial” addresses, then banning you from submitting an address change request if they think you’re moving to a so-called commercial address.

                          The worst sites are the ones that refuse to accept an address unless accepted by some address validation service. If you live in a new location, a location that was recently annexed into a city, a location that’s just weird enough (aka not a single family home in a rich suburb) to not be in the system, you’re screwed. Only use address validators if you let users override them. I know where I live, damn it!

                          And that’s just for places I’ve lived personally. There’s probably a bunch more issues for rural areas and international addresses.

                          1. 8

                            For a few years I lived in an apartment building that had retail on the first floor, with an entrance for each. If a delivery went to the wrong door it usually was lost or stolen, but specifying the correct door went on the second line of the address. USPS always saw it, but the harried, closely-monitored package delivery services almost never did. So I’d swap to put that on the first line, which is invalid but always worked. Except when blocked by a site that required using an address their “validator” approved of. It’s very frustrating to have a site tell me I don’t know my own address.

                              1. 2

                                Until recently we didn’t have postcodes in Ireland. It was always a fun dance trying to figure out which combo of “”, “NA”, “ N/A”, “000”, “ 000000” etc would be accepted.

                                And then of course the package would show up on your door with the nonsense postcode proudly printed on it.

                                1. 2

                                  The UK is interesting for this type of thing because UK addresses basically break almost every assumption about addresses. Houses without a number and houses on streets that don’t have a name are quite common. Another thing that annoys me to no end, systems insisting that the country has to be “United Kingdom” when it’s almost always better to put the actual country in the country field (e.g. England, Scotland, etc).

                                  1. 1

                                    The nice thing is that house name or number + postcode always uniquely identifies an address in the UK. Unfortunately, a lot of things don’t take advantage of this. My address is {number}, {road name}, {postcode} but there are two blocks of flats on the same road that have the address {number}, {block of flats name}, {road name}, {postcode}, where the number and road name are the same as my address but the postcode is different. Delivery drivers (especially food delivery ones) often come to my house when they’re aiming for one of the flats.

                                  2. 2

                                    Validators are such a pain. A store I go to always asks for a phone number for their rewards account. In the last few months, some idiot decided they should validate all of the phone numbers in their database…

                                    Of course, the phone number I’ve used for seven years doesn’t validate. Along with hundreds of other people who shop there.

                                  3. 9

                                    I’ve tried very hard to write software where name is just one string. And address as well. But interacting with other systems causes trouble.

                                    1. 8

                                      let’s be honest, everyone just optimizes this for the stuff he’s used to, which also tends to work well (performance, forms etc) and is correct for them in around 99% and moves on

                                      1. 3

                                        Just a funny little note, but your usage of ‘he’ makes this comment self-referencing in a way.

                                        1. 2

                                          ah yeah, though it isn’t wrong

                                      2. 5

                                        This suggests the schemas are working exactly as intended. Given a set of rules a Qalified Entry will follow, make sure innocent mistakes breaking the norm don’t happen.

                                        That’d be why we use schemas. They are working exactly as designed.

                                        Of course the corollary to this reality is stated in the post. If you don’t care, don’t care. Don’t put schemas around things where you actually don’t care.

                                        1. 11

                                          Yes. The schema is forcing the data to be in a certain format; it’s forcing people to provide a first name, middle name and last name (or first name and last name). The very problem is that such a schema doesn’t conform to reality. Your schema exists to model reality. The problem that’s being complained about in this article and many like it is that the schema poorly models reality, because a whole lot of people don’t have names which fits the schema.

                                          I don’t understand what you’re trying to say.

                                          1. 6

                                            See my comment above about “Seeing Like A State”. Schemas don’t exist just to model reality, they exist to create and enforce a particular kind of reality. Companies and states don’t want you to have total freedom to identify yourself because such a freedom imposes extra costs on their endeavors to enforce laws (very arguably good) or exploit you (bad).

                                            1. 1

                                              Reality includes bad actors. Schemas don’t exist to enforce reality, it exists to preclude the easiest sort of bad actions (willfully disregarding reality).

                                              When reality and good actors conflict with schemas, there are tickets to open, sure. There can be no innate expectation that all of the acceptable inputs are permitted by the schema, only that the easily bad ones are blocked.

                                          2. 7

                                            Xe doesn’t mention this but is surely aware of this being an aspect of power. It isn’t just that people make cultural assumptions about names or are simply lazy. A name is one of the primary ways a state or similar system rationalizes you into a resource. If everyone wanted to change their name or the nature of their name every year, the job of tracking ownership, collecting taxes, enforcing contracts, collecting and selling your personal data, would all become much more expensive.


                                            In the end its about achieving economies of scale.

                                            This is unhuman at its best and inhumane at its worst but its also the ocean in which we all swim in terms of our political and economic circumstances. It will take tremendous effort and thought to solve this kind of problem.

                                            1. 4

                                              Email salutations look like this:

                                              Hello Xe ,

                                              You frequently even get things like that with first and last name. Just bad software.

                                              Another great example: Especially older websites, online shops completely die if you have have “-straße” (German for street, cause ß) in the address or if you have address parts looking like “1-3/4/5” which is very common in German speaking countries. It means “The building complex with house/street numbers 1 to 3, the 4th entrance door 5”. So the street field doesn’t like it cause it contains numbers, the house number doesn’t like it for dash and slash. So even if you have separate fields for each, all optional you still can’t enter your address.

                                              1. 1

                                                I’ve never seen this /4/5 and I’ve lived here all my life :P

                                                I also only learned about “XX-Straße 123 II” to mean “2nd floor” in Austria in my 20s.

                                                1. 1

                                                  I have never seen the floor thing and I’ve lived in Austria all my life. Only in the form of 1-3/4/2/5 where the 2 was the floor. That’s house numbers/entrance/floor/door. That one might have been due to how some form worked, simply concatenating everything with slashes. The floor was there because it was a delivery and they often ask for that.

                                                  There’s even more weird denominations I’ve seen for addresses of apartments that either have two floors or where somehow half-floors are added, or when houses or apartments are split so someone can rent the newly created separate space. The latter often end up being described in addresses in text form making it into a problem of what length the address text may be.

                                                  But I’ve lived at multiple places with /4/5 adresses, basically whenever there’s some kind of “inner yard” are, so, some buildings that are clearly grouped together with the entrance in at least one case not directly at the street. I’ve also seen /4//5 in other countries, but not sure if 1-5/4/5 together.

                                                  Not sure how entrances not directly at the street wor in other countries to be honest. Maybe just grouped apartment numbers per building?

                                              2. 4

                                                We write/run payroll/back office software in the USA, this is what we do for names:

                                                print_name  NOT NULL

                                                ss_name is their name for Social Security purposes, i.e. their legal name. Not everyone has social security numbers in our system, since not everyone gets paid. We should probably rename that to legal_name, but whatever. It’s only used for legal forms(W-2, etc)

                                                print_name is the only one that must have an entry. It’s what we use for reports, emails, basically everything user facing.

                                                We use last, first, middle and suffix for external systems and for users that insist on such naming policies.

                                                By default, we will populate print_name as "$first_name $middle_name $last_name $name_suffix", but users are welcome to put anything they want there.

                                                  1. 2

                                                    Sigh. I’ve changed my surname to my wife’s and attached the old one at the end. Legally, my first name is a single word and my surname are two words.

                                                    My surname of two words separated by a space has been rejected several times as invalid. Last time by PSN. I mean. Come on. You spend years lobbying for copyright laws and DRM and then don’t have enough lawyers to check regional naming laws?

                                                    1. 1

                                                      There’s a failure mode that @cadey doesn’t discuss but is likely to cause problems specifically in their case because their chosen name ‘Xe’ is also a valid gender-neutral pronoun. I wouldn’t be surprised if there are systems that reject a pronoun in a field that expects a proper noun.

                                                      1. 2

                                                        Surprisingly that failure mode doesn’t come up at all. I’m amazed too. However this does allow me to have that mythical level of neopronoun/handle synergy that nobody else has.

                                                      2. 0

                                                        The first name, last name thing really annoys me.

                                                        This is why I have Kayode Lycaon all over the place instead of Kayodé.