52 comments

[ 6.7 ms ] story [ 118 ms ] thread
Of course, the obligatory article about programmers and names must be linked to here: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-b...
That article seems like a bunch of useless pedantry to me.

"...refer people to this post the next time they suggest a genius idea like a database table with a first_name and last_name column."

So what's his suggestion then? Take this list of "bad" assumptions and try to build around them? Hogwash. Questioning whether you should design around someone not having a name is like asking if you exist.

I know companies that have been making millions for 15-20 years with this genius idea. You know what's so genius about it? It's simple, the developers understand it and it works for a great, great majority of cases.

It's not pedantry when a significant proportion of people on Earth are affected by at least one of these falsehoods.

Obviously it's very difficult to design a system that doesn't fall foul of any of these, but we could at least strive for better. Just having "first name" and "last name" fields is really quite culturally insensitive. It pretty much worked when only Americans and Western Europeans were using computers, but the online world is a lot bigger now.

A comment by the author gives examples of humans who don't have names, but certainly exist: "Someone born into slavery in the Sudan, a woman born in rural China, an American baby recovered after being born into a toilet, a feral child, an amnesiac, etc, etc."

It's not quite so important for a social network to deal with this, but a government system, for example, should be more rigorous. Whatever the system, if we can be more global in our attitude, so much the better.

> A comment by the author gives examples of humans who don't have names, but certainly exist: "Someone born into slavery in the Sudan, a woman born in rural China, an American baby recovered after being born into a toilet, a feral child, an amnesiac, etc, etc."

I don't know if this is a peculiar idea, but in those circumstances perhaps a "Generate Name" button is the useful feature.

Only if that name is intended to become official. If not, rather make sure that the field accepts a null value. ;-)
I'm not going to communicate with you by pointing. Stop being a special snowflake and come up with a name, even if it's local to the service. No null values. Your name can be 'null value' though if you like, win yourself some geek points.
I think that's effectively how this is handled at the moment.
"an American baby recovered after being born into a toilet"

Does anyone seriously believe that this person will go through life with no name? There are placeholder names for unidentified people, the baby will get one of these until someone takes authority for it and names it.

It is too pedantry, when at the end of the article you're suggesting that anyone is sub-genius for simply not caring about the same things that you might! Especially when a significant proportion of developers are not going to be adversely affected by most of these falsehoods (many of which are just the same assumption worded differently).

"Obviously it's very difficult to design a system that doesn't fall foul of any of these, but we could at least strive for better."

If your goal is to achieve some nebulous goal of being "better", then sure. Otherwise, please tell me exactly why am I wasting my time? There has to be a reason, for instance if I'm building a global system that actually cares about acquiring exact/full/legal names and every name you've ever had.

"It's not quite so important for a social network to deal with this, but a government system"

There you go. You almost hit the nail on the head, but again - if your government system is not concerned with collecting every data-point about the person's name, then why should it care?

Having a full_name and a usual_referent_name would seem to work.

full_name - Matt S. Trout usual_referent_name - Matt

(for "normal" stuff)

full_name - Matt S. Trout usual_referent_name - mst

(for "geek" stuff)

and, yes, if I'm registering with a site for both, I have to pick one. But at least no matter what my full name is that way I can enter it.

It's impossible to design around them, given that several of the items are mutually exclusive.
The point of that article is not to define any definite solution; it's just to remind the programmers that there is a nonzero number of cases when any of the assumptions on the list (and any that are missing) will be wrong. Of course that one should cover most and not all cases, but they should be flexible enough to anticipate a surprise of that kind.
have an upvote from someone with a single surname living in a country where the default is to have two...
"Just a reminder"...sure. It's funny how "just a reminder" always sounding patronizing, particularly when there's no good solution that covers every base.

Not only is the tone super pedantic, but the author berates people for creating simple databases based on their simple assumptions.

Fuck that. Not very agile. It's not like we can't update it if there's a large demand for change in the way names are collected.

I have a one-word legal name.

Some people have two, three or more names.

Now what?

Put the name you like in 'First' and anything remaining in 'Last', it'll work well enough.
I usually use the same name in both fields. My question was more rhetorical to the person I responded to.
Should I care? If I am designing a system that requires only a full legal name...then it depends on the law of the target region. If it's for almost anything else...I'm not going to waste my time unless there are more than a few complaints.

My entire point here is that if it's really important to the system being designed, that the correct answer will occur to you naturally. Honestly, if we design a system that requires full legal names and we don't look into the laws of the target region, then we're probably not too bright.

So tell me, is two names United States, or any US state's law, or is it just a common assumption?

Do programmers routinely look up the law for common assumptions? I'm guessing no.

And by the way, the tone of your responses in this thread is the first time in my years of HN participation (under various user names) that I've wished for a plonk file. Everything you've said has the core of a relevant argument, wrapped in condescension.

You're missing my point. If the legal exactitude of the name is relevant to some functionality, then yes I do think that most decent engineers will naturally tend to want a reference of some sort. Otherwise, they just change whatever broken thing they did if and when it becomes a problem.

It doesn't make them any less intelligent than the author of this article. The cutesy way that list was written and that comment at the end of the article was what I was responding to earlier, but anyway...what exactly did I say to you or anyone else that was so condescending? I'm not saying that I'm not slightly intense at times, maybe I ask a lot of rhetorical questions... Sorry.

What you need is to separate components of a name that can be used separately. If your app wants to say "Welcome John" in some places and "How can I help you Mr. Smith" in others, you need to have FirstName and LastName fields. If you also want to say "Account details for John A. Smith" then you need another FullName field.

You can't have just FullName, because parsing the name for it's components is incredibly complicated. (E.g. some people have last names with spaces in them.)

A suggestion below says FullName and PreferredName, which would probably work for many applications.

> "Future generations are going to find it impossible to register themselves on social networks with their actual birth names, because older generations have used them all."

Only if we presume:

1. Registering people with the same name is difficult-to-impossible. -- And/Or -- 2. Systems that future generations care about will have been invented at some problematic chunk of time before they attempt to register for them.

As to 1) I believe even Facebook can handle the multitude of "John Smith"s fairly painlessly. And 2) is borderline laughable.

In regard to your first point, yes of course they can handle multiple equivalent names for display, but if you want to use Facebook as your Identity, then there can be only one.

The person at http://www.facebook.com/john.mcdowall is not me, nor is john.mcdowall1 and so on.

So? Why don't you simply use your phone number, nobody else has the same one as you. Why would identity be restricted to names?
Did you read the post?
I did, and I don't get your point. Since we already have multiple people with the same name, I don't see how a name is relevant when it comes to uniquely identifying a person.
It's not about having people with the same name, or identifying a person uniquely for the purposes of a program. It's about people changing their legal birth name in the future to a unique choice that means something to them so that they can have a single identity across all social networks or communities. They will want to do this because social networks and communities will be so ingrained into every day life, so much so that their online identity will have more meaning to that person than their legal birth name.
This is a cultural thing. By selecting a personally-meaningful name (unique or not) you give a person some form of self-expression. This self-expression can be related to online presences. It could become culturally common to do so.

But it loses the connection to ancestors that our current naming culture has. My name (first, middle, last) refers to some of my ancestors. I would not change that name. I have a few screen names that I highly favor and use in emails, forums, and gaming high scores, but I still also like my given birth name for it's genealogical associations that link me to my identity across generations.

Similarly some people's names are chosen for religious associations. In any case, will we abandon our current naming culture in favor of personally chosen names in the style of online identities?

Why don't you simply use your phone number, nobody else has the same one as you.

You do know that multiple people can share a phone number, right?

Yes, and one person can have multiple phone numbers. That was just an example of another data which can be used for identity which is far less ambiguous than the proper name. The point with identities is that, if you need to be able to identify someone with a single piece of information, it can't be defined by the person being identified; instead it has to be appointed by a globally central authority, since it's the only way to ensure uniqueness. So in any case, names are completely irrelevant when it comes to identity.
if you need to be able to identify someone with a single piece of information, it can't be defined by the person being identified; instead it has to be appointed by a globally central authority

Not necessarily; for example, people could generate their own UUIDs as identity tokens.

That's a fair point. However, identification is not only about uniqueness, it's also about proving that you are who you say you are, which still requires a central authority -- or maybe another un-fakeable certificate, although I'm not sure how it would be implemented without depending on another type of identity (such as email).
it's also about proving that you are who you say you are, which still requires a central authority

I disagree with this too, because "who you say you are" is not a single thing; it depends on the context, and you ought to be able to control what connections people can make between different contexts.

For example: I might want to give one ID to my doctor, to connect it with my medical records, and another to the DMV to identify me for a driver's license. There is no reason why these two IDs need to be the same: in other words, there is no reason why the DMV needs to verify that "who I say I am" to them is the same as "who I say I am" to my doctor. Or again, if I have to prove "who I say I am" to Social Security in order to receive benefits, that doesn't necessarily mean I have to use the same ID as I use for other purposes.

Of course, some of the reasons I would need an ID are to prove that I have a certain set of rights, as in the Social Security and DMV examples, so whoever I give the ID to has to be able to connect that ID with the appropriate evidence that I have those rights. So my "Social Security ID" would have to be connected to my employment history, or at least to my history of paying into the system, and my "DMV ID" would have to be connected to my passing of a driver's test. But that still doesn't require any single central authority to dispense or verify IDs; I could still generate my own UUIDs for each of these entities and then allow them to link those IDs to the appropriate information. The fact that we allow the government to create one central "ID" for us does not mean that's the only way to meet those needs.

And yet whenever any one of your "friends" sees or references your identity, it's displayed and interacted with as simply "John McDowall" or, more likely, "John".

Is that situation, in which merely a URL doesn't precisely map to your stated identity, somehow broken in a way that an "FM-2030" mass-name-changing cultural solution would fix?

Particularly when we consider that, to date, username preferences are for decidedly not unique options. They tend toward things like, HaloFan1 and JohnSmith73 and MrMcDowall.

Further, in almost all modern cases, these are just getting translated back to non-unique names and nicknames for display.

I actually find that interesting. Why can't we change our names at will? Is it because government needs them as a unique ID (combined with birth date and what not)? If governments had other IDs (and they do have social security numbers), why bother keeping track of names?
I think mostly it is because of the legal status that names convey - contracts can only reference tangible names for people or organizations in them, not abstract concepts. So I guess it's not the Government who would and do happily use SSNs to identify us, but the legal system.
IANAL, but I believe that in the United States you're free to use whatever name you like so long as it's not done for fraudulent purposes.
Sure you can. When I worked at a large non-profit we had a name change request from our affiliate members for a user named "Jack." That's right. Just Jack. He said that was his legal name. In Active Directory or LDAP, names (or lack of) are just attributes.

So I just put 'First Name: Jack' and give him 'jack' as his username.

> "How would you process a credit card payment for someone who has only one name?" The Sripe API doesn't require a name at all, so they're clearly ahead of the curve here!
Yeah, Stripe doing it like a Boss :)

That said, you know there's programmers out there not using the Stripe Button and coding forms by hand that will have validations on them for the First and Last name because they think it's the right thing to do. I've seen it.

I worked with a guy called "Comet." That was his full legal name. He logged a bug against the HR system, because it insisted on both a first name and a last name.
Just a note for the author of this piece - FM-2030 played in the Olympics in 1948, not 1984.
Whoops! Thanks :) That really would have been Transhuman...
How's that new? What about Seal, Madonna and Louis C.K.? Programmers should already handle that. Handling 1 name instead of 2 is a lot easier than let say change your system because instead 2 now you need 5 because people decided to have 3 middle names. Running out of IPs and upgrading Internet to 2.0 version sounds more complex than shrinking names from 2 to 1 IMHO. is it enough for a specific situation (security, verification, banking, etc.)? Probably not. But I am sure there will be plenty fo ways to do so. Every other man in China is Li or Lee and they somehow managed to deal with it :)
"Programmers should already handle that."

Except they don't. I have a one-word legal name and I have rarely found any online from that allowed me to have less than two names. I realize I'm an edge case, so I just make up something for the other field.

Ironically, I practically begged Google+ to allow me to use my real name, which they require for their "fine dining experience" (<cough>advertisers<cough>), but they refused because it was less than two names and looked fake. They may have finally worked that out by now, I left the building long ago.

I bet you have fun with the TSA.
I don't fly much. When I have, it's a brief conversation with the TSA supervisor, followed by the miracle of flight.