Falsehoods Programmers Believe About Names
Jamie points out this interesting article about how hard it is for programmers to get names right. Since software ultimately is used by and for humans, and we humans are pretty tightly linked to our names (whatever the language, spelling, or orthography), this is a big deal. This piece notes some of the ways that names get mishandled, and suggests rules of thumb (in the form of anti-suggestions) to encourage programmers to handle names more gracefully.
I found the piece very interesting.
Though my inability to post this comment appears to have outlived the slashdotting of the site.
Who the hell has numbers in there name?
and let god sort them out...
I am fortunate enough to be the child of a professional smart-ass who intentionally gave all his children two middle names so that we would not fit into the computer systems of the era.
When I grew up my parents used my first middle name as a "given nickname" (it's actually in quotation marks on my birth certificate). So most of the time when I give my name for something I use my "given nickname" as my first name. Unless I feel like using my legal first name as my first name in which case I use that. There are probably four or five different versions of my name attached to my SSN in various different databases.
I've also got a sufffix: III. I don't have two ancestors with the exact same name as me, but since the various parts come from two different relatives my parents settled on III.
After just 15 minutes of the story being posted?
Wow, that's gotta be a personal best for /. (or, the site is a wee bit underpowered... ;)
Here's the Google cache in the meanwhile: http://webcache.googleusercontent.com/search?q=cache:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
Even the cache needs tweaking to load.
Text only version.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
John Graham-Cumming wrote an article today complaining about how a computer system he was working with described his last name as having invalid characters. It of course does not, because anything someone tells you is their name is--by definition--an appropriate identifier for them. John was understandably vexed about this situation, and he has every right to be, because names are central to our identities, virtually by definition.
I have lived in Japan for several years, programming in a professional capacity, and I have broken many systems by the simple expedient of being introduced into them. (Most people call me Patrick McKenzie, but I'll acknowledge as correct any of six different "full" names, any many systems I deal with will accept precisely none of them.) Similarly, I've worked with Big Freaking Enterprises which, by dint of doing business globally, have theoretically designed their systems to allow all names to work in them. I have never seen a computer system which handles names properly and doubt one exists, anywhere.
So, as a public service, I'm going to list assumptions your systems probably make about names. All of these assumptions are wrong. Try to make less of them next time you write a system which touches names.
What's in a name?
http://www.youtube.com/watch?v=kFmJsTKWEBI
http://www.youtube.com/watch?v=cuUE7oKIkVI
Names of what?!
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
Most developers, do not get that the world is made up multiple standards and refuse to consider local vs database relationships like:
Boolean: Yes/Si/... No/No/..
Amounts: ,. ., 0,2,3 places from right for display, 0,2,3 places from right for value (USD: ,.22, JPY: .,20) ./ 0 suppressed ISO, JPN, USA
Dates::
How do you thing the do working with phone@, addresses and names?
Database engines fail with these simple-complex constructs because sorting and matching tests are still left hand and character set driven. A database MUST treat all of these names the same: McClean, MacClean, MCLean, Mc Clean, Mac Clean. McCleen, ...
Software is NOT designed to be perfect and cover every case. Have a numeral in your name? Too bad. Need some names to be case sensitive, and others case insensitive? Sucks to be you. Have a 200 character name that doesn't fit in the 100 characters the designers thought no crazy person would ever have? Tough.
I started reading through the list, and it's just ridiculous. There's a few good points, like names don't change, or names are unique. But they're so obvious that the vast majority of the times it's not a big problem. More often it's just a matter of training the data edit/entry folks how to change someones name, or how to not assume a name is a sole identifier.
But assuming the worst and trying to design a system that'll allow people's names to be Chinese characters when you don't do business in China, have presence in China, or ever ever plan to? That's ridiculous. Software doesn't have to be perfect out of the shoot. It should be adaptable though if some unforeseen shortcoming becomes a larger problem. Gee, I guess if you ever chose to do business in China and need Chinese character names you might have to re-write part of the damn software. Oh well, that's what software developers are FOR!
If you don't even HAVE a name, then I submit you're crazier than the artist formerly known as the artist formerly known as Prince. At least HE had a name, though it was an unpronounceable symbol. The world can't accommodate every possibility, and software is no exception.
AccountKiller
He's essentially arguing that, because names vary a lot and are complex, your software should never do anything useful with them. Sorry, but that's a stupid answer. In a lot of systems, being able to sort by surname may well be more important than being able to handle people who claim they have no surname.
Of course, you shouldn't gratuitously do stupid things, and interfaces should aim to be relatively clear. But most people can figure out how to enter their names into relatively standardized forms, and those that don't should probably figure out how.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Thanks, Prince
Foo and Bar, only names you need. Besides, Foo is a pretty name for a girl!
Bibo Ergo Sum.
Jennifer 8. Lee.
My last name is O'Leary and over the past 5 years web sites have not gotten any better, and arguably have gotten worse, at handling the apostrophe in my last name
Help me Slashdot, you're my only hope.
Considering how many entry forms still don't allow '+' in an e-mail address (or, worse, allow it in the sign-up box but not in the unsubscribe box), and considering how many banks still restrict you to an 8-character password, does it come as any surprise that they have difficulty with something that isn't defined in an RFC?
Scratched Emulsion
You are number 6
--
Stay tuned for some shock and awe coming right up after this messages!
Okay, I finally got the page to load:
Falsehoods Programmers Believe About Names
If only Slashcode would do a single hit on <domain> + .nyud.net + /rest/of/url/ for every link posted in an article, then it would be trivial to switch over to cached copies of the content.
coding is life
'nuff said
First thing I learned back in 1993 when I got started.
1) George Foreman has five boys named George Foreman. Your database better be able to handle that. :-)
2) Your database better be able to handle Cher (no last name).
3) People are not required to have Social Security numbers. (it's an optional program - you don't have to partipate).
4) Not everyone's last name starts with a capital letter.
5) Mexican people's names break ASCII (the tilda n).
6) People named O'Grady have a hard time getting their name in a database sometimes and have a hard time getting their name passed via a URL sometimes and generally mess stuff up.
7) People from Sri Lanka will break your name length limits.
8) Some people's name is only a single letter.
9) Some people go by their middle name god damn it!
My first name: "where 1=1 "
My last name: "'; drop table users; --"
The article writer started out well, and then immediately ignored his own line of thought.
"John Graham-Cumming wrote an article today complaining about how a computer system he was working with described his last name as having invalid characters. It of course does not, because anything someone tells you is their name is--by definition--an appropriate identifier for them."
Yes, in your scope, your name is going to be accurate by whatever cultural, political, legal, optional, character-set or other restrictions or freedoms apply.
However, in the scope of any given app, your name may very well be an 8 character, [a-zA-Z] string. That's what the app means by the name field - by definition.
Naturally, no programmer would use any user-provided input for any sort of unique key ( err... right?) ... so really what this is about is that someone did not properly set user expectations, that they may not be allowed to arbitrarily spool data in any format or fashion into any given input field - 'name' in this case.
Or someone already knows that fact, and is ranting because they chose today to ignore it.
I code to spec. The product and marketing departments write the spec (what little there is); the QA department amends the spec with overly specific test cases. I suggest that the spec is incomplete and won't handle...but I'm told, just code it to spec. I recommend changed, but we don't have time for edge cases. I point out potential problems, but we're unlikely to get any of those. I warn of potential compatibility problems but we don't care. Are you just trying to be difficult? If there's a problem QA will catch it. The project is overdue already, and by the way here are some new requirements that need to make it in, and we can't change the release date because we already promised the stockholders. Why is your code so complicated, my twelve-year-old kid could write this.
It's not my fault. I code to spec.
Single names: I've done data conversions on a project which covered multiple countries in Asia, Africa and Latin America. A "new" thing I came across about African names was: Some people have just a single name. It's not their first name or their last name, it's just their name.Though, they're generally okay with it being considered their first name. However, most legal docs require a last name (well, maybe not in some African countries) so we had to use dummy text in the first name.
(Almost covered in assumptions 19 & 20 but not quite.)
Initials: Globally, there are ppl who have a single letter, or two, as their first or last name. These could be initials of their parents' names or based on something else. Point is, min. length requirement of 3 or even 2 does not work.
Implications of the article in general:
1. You can't do any validation on people's names. No programmer would consider this proper.
2. You can't use someone's nationality to create validation rules, since nationality/citizenship can change - and using 'country of birth' doesn't cover re-located/migrated families, assuming your application uses that field.
3. Most Importantly...and Obviously: Either ask the client/customer what allowances they want in the application. Or, clearly state your assumptions and have them review & refine it.
Eat some sheep too
I can has cheeseburger
Software shouldn't have to satisfy every whim and excentricity. If you don't have a well-defined first name and last name that consists of extended alphanumeric characters in Unicode and starts with a letter, well, then get one, OK? And while you're at it, come up with decent Romanized and ASCII (traditional Latin) versions of your name, conformant with one of the common Romanization systems of your language; you will need that too if you want to travel internationally. Single letter names are also a potential problem because they are confusable with abbreviations, so consider using a variant spelling ("O" -> "Oh").
This isn't because programmers have some sort of hangups about names, it's because people themselves need to be able to refer to individuals in some reasonable and standardized way, they need to be able to write your name, alphabetize it, and correct errors.
It seems to me that most misconceptions about names can be fixed by the following:
Allow a single, Unicode-enabled field of "unlimited" length (let's say 4 kilobytes) which represents "name". Several would be defined by different roles -- "Real name", "Nickname", "login", where only login (sometimes simply an email address) is required to be globally unique.
Now let's look at what that breaks:
First, #1, 2, 4, and 5. How am I supposed to avoid assuming these? People should be allowed to enter an arbitrary number of names for themselves? I suppose that's possible, but it immediately kills most of the potential uses of this data. If I want to set a nickname that goes with my forum posts, say, what good is it for me to have five nicknames? Seems like the only potential use would be making people easy to find by real name -- so, a social network.
#6 -- surely 4k is enough, but this is also not a terribly difficult assumption to change later. Annoying, but not devastating, not even as hard as changing from the first name / last name combination into one "real name" field.
#7, 8 -- most systems would make it trivial for people to change their names.
#9, 10 -- UTF8 is easy.
#11 -- very, very curious to see an example. And wouldn't that be a bug in Unicode? And this is again one where I have to ask -- how do you change this? Allow arbitrary images?
#12, 13 -- obvious solution is to make the name system case-preserving, thus allowing both case-sensitive and case-insensitive searches.
#14 -- again, avoid by simply allowing the name to be a single opaque field.
#15, 16, 17 -- if your name supports random unicode, no idea why these would be a problem.
#18 -- not sure why it matters.
#19, 20 -- again, if it's just arbitrary text, it just works.
#21, 22, 23 -- not sure how I'd make that assumption.
#24, 25, 26, 27 -- again, the name is just an opaque bunch of characters.
#28 -- what?
#29 -- opaque characters.
#30 -- keep the original text as-is. If you want to try to split people out by naming scheme, do it later, but keep the original. This should be a "duh" concept -- always preserve the original user input. Cache transformations for speed, if you like, but they're a cache -- keep the original. Your algorithm might change.
#31 -- bad idea to assume bad words won't cause problems in general. I currently play an MMO in which I physically can't talk about Emily Dickinson, and have occasion to more frequently than you might suspect.
#32-36 -- why would it matter? Unless...
#37 -- Fine, but how would I otherwise connect the same person?
#38 -- How about unicode-equivalent? And of course, they might not -- one might make a mistake, or the name might be represented differently. But you'd have to deal with typos anyway, so this isn't exactly shocking.
#39 -- I'm going to have to agree with the assumption, though. If I develop a system which works well for people who only follow the US standard, and I suddenly have a ton of people from China wanting to use my service -- enough that this is actually a problem for me -- that's a nice problem to have.
#40 -- People can make up names. I guess this explains #32-36, though.
The sense I get is that half the list is stuff you'd almost have to be stupid to run into (seriously, who doesn't use Unicode?), and the other half involves some seriously weird names and cultures that are going to have to meet me halfway, if they expect me to do anything interesting with their name. As I understand it, the only way to get this right would be to allow people to have zero or more names, each of which is either an unlimited amount of text in any encoding, or an image (raster or vector) of unlimited size. To query such a system requires insane amounts of logic just to deal with the text, and throw in some OCR for good measure.
I think this is a case where I would much rather see people evolve to match the technology, rather than the other way
Don't thank God, thank a doctor!
Databases don't work with names well because it's really freaking hard even for a human sometimes. People have funky spellings, middle initials, sometimes full middle names, phone operators mis-type or mis-hear names, or assume a different spelling. People have accents which messes up people hearing names and bad handwriting which messes up people reading names. People have names that look like words that should be cleaned from names like "Mr. John Trust". While "Trust" should usually be cleaned from a list of bank trusts, it can't be cleaned here. Some people do last name first. You want to add another language and address standard in there, good freaking luck. As far as I know, doing data processing as a job, if you want good results, you MUST look at a very small percentage of an average database manually (maybe 0.01%-1% depending on how dirty your DB is). But for any global company, that could still be tens of thousands of checks you have to make and it will be very time consuming.
I do work on knowledge base systems, and in particular, research into feeding data into knowledge representations in an automatic way from NLP systems, often from cross-lingual sources. For what I do, issues about things like the naming of persons present real matters that need to be foreseen and thought through before invalid assumptions creep into systems and create headaches down the road.
From the tone of your post, I presume that you work primarily on databases that store stuff like customer information. So maybe you don't need to worry about this kind of thing as long as you constrain your business to a certain segment of the world.
But your problems aren't everyone's problems; some of us contend with more complicated issues. Some of us, I imagine, do actually want to do business in more than one country and care about things like this - I'd imagine people that write software for the EU probably have to contend with these kinds of issues pretty frequently. The author of the article is pointing out something that you might not care about, but that doesn't make it stupid or useless.
He's essentially arguing that, because names vary a lot and are complex, your software should never do anything useful with them. Sorry, but that's a stupid answer.
Actually, he's arguing that you should become infinitely wise and knowledgeable prior to doing anything useful with names, and failing that you should never do anything useful with them. Which is an even stupider answer.
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
Just assign everyone a number.
They're not globally(or even locally) unique nor are they even identifying, so if you're writing a program there's really no point in trying to treat them as such.
Even in combination with other data you can't guarantee a unique or identifying result, so why bother. The only reason we bother with them in the first place is because people would get offended if you just treated them as a number, which is exactly what every single computer program on earth does and should do. I know that people get all precious about them, but all you can really do is specify a reasonable number of characters in a reasonable character set, in a format which makes sense for the people who will be using the application(the fact that your users will be looking for a last name is more important than whether a specific person has one from the point of view of application flow, and the vast majority of cultures have a naming structure which conforms at least loosely to a first, last, other configuration even if the display order and meaning of the configuration may differ.
Yes. It's programmer's fault that they write applications that make poor assumptions about names -- not the people who design software requirements who are neither programmers nor usually very worldly.
Perhaps we should have a list of "assumptions people make about developers"!
* Developers get to design their own software.
* Developers get to have some say in how their software is designed.
* Developers at least can prevent really stupid things from being put in the software they write.
* Developers aren't smart enough to know that outliers are inevitable.
* Developers aren't smart enough to know that of course there are people with punctuation, extra words and spaces, even letters that no one has seen before.
* Developers wouldn't rather code just one column to hold an identifier rather than two.
Terrorists can attack freedom, but only Congress can destroy it.
The Man Whose Name Wouldn't Fit, published in 1968.
Names are essentially what we are willing to be identified by, which the computing culture has decided that it must be representable in writing (or drawing for that matter). Writing is a prerequisite for computing, but assuming that everybody who is not actually computing has a name writable in some conceivable script or alphabet is setting up arbitrary rules for the game - which isn't so much different that setting up rules for "usernames" used for logins. The bottom line for now is, if your name can't be represented in UTF-8, you need to put it in ASCII. Foreign names are represented with the Japanese alphabet in Japan - by putting together characters that approximate the pronunciation of the foreign name - yet for well known people, not any approximation will do - society agrees what that foreign name should be written as. If a person can potentially have a name written in a language he doesn't know, a system that needs to represent "real" name(s) has to draw the line somewhere.
This article sounds to me like the author got pwned in some discussion about database design, so he went off and whined about it. A few of the points are okay, but most of them are just bullshit he pulled out of his ass to try to make the list longer. The truth is, you can safely ignore most of these without trouble. Let the fucking user deal with it. You put a number in your name? Then you deserve the trouble you brought upon yourself. You don't have a last name? Well, unless you've sold a few million of something, you're just a pretentious whiny bitch and I hope you die.
I live in Australia, I deal with government forms all the time. They are almost universally Family name/Given Name/Other Given names. Information on these forms is for the use of the entity collecting it and therefore has to be usable by their staff, which makes having a system that accepts non-latin characters pointless because nearly none of the staff will be able to read them. I can see the use in the system storing Chinese characters for use in mailing but for internal use the system needs a latin character name*. This article is ridiculous as it even criticises the assumption that people will have family names. The author must have missed his history lesson explaining that family names only became popular in Western European culture when governments started tabulating people. In a rural village everyone knows that Jack the butcher is different from Jack the baker.
That said, many programmers are terrible at designing name fields. I have two middle names (not an exceptional case for Anglo-Saxon culture) and until a few years ago many input systems would not handle this.
*Even if the system did a conversion to a latin representation of an asian name most people can't pronounce them because they are based on different sound primitives. Which is why Asians tend to adopt westernised versions of their real names.
========
CINC, 4th Penguin Legion
Good luck pronouncing it, or writing it accurately.
Poor Mr. Cumming. I bet this is not so much a programming thing as it is the decency censor interfering.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
I found the article pointless, actually. Of course people's names are far more complicated than the typical programmer realizes. I know that Chinese names are an issue (I'm Taiwanese, so I have one). But the DB systems I designed recently only need to be as good as what the credit card companies use, and only good enough for a user to login. There's just no point in pursuing someone else's incoherent sense of perfection.
This issue is pretty much universal. Even outside the binary world people still silly assumption about people's names.
For example, numerous people have raised objections about my signature. They always give me bullshit complaints like "Sir, that is not legible." or "um... that's not your name." or even "Did you just draw a penis on the dotted line?".
My signature does not have to be legible.
My signature does not have to be my name.
My signature does not have to contain my name.
My signature does not have to contain any name.
My signature does not have to be in the English language.
My signature does not have to be in any human language.
My signature does not have to consist of meaningful symbols.
I swear if I hear one more complaint about my signature I will carry around a portable photo printer to render goatse as my signature:
"Yes, my signature is an 600 ppi out-stretched anus. Deal with it. The law says that any mark that I make is a legally valid signature and you have to recognize it as such. You either sign the mortgage or I'm going to the next bank."
Not only does this author contradict or duplicate himself many times in that list but he's basically saying everyone needs to write all software to accept all characters in existence. Certain compilers, frameworks, and other technologies that I have to use don't even support that! Plus, I'd have to manually filter all SQL injection style text instead of just shrinking the allowable character set. The fact that he even put "my software will never have to accept korean names" in the list shows how out of touch he really is. I'd phrase my rule more like "I don't care if someone may attempt to use a foreign character set in my program because I'm purposely not allowing it since it's an internal program and we're based in the central US plus all asian languages have english letter counterparts." And he stated that people may have multiple names and aren't settled on just one at any given time. WHAT?! If they're using my software to enter their name, they have to pick one. Call me stubborn like that. I don't know what planet this guy is from but he and his opinions need to stay there because I'm programming back on Earth.
Google's Super Secret Search Algorithm: SELECT @search_results FROM internet WHERE @search_results = 'good'
Good coders shouldn't spend too long on something like picking a name, because it seems to me part of coding well is keeping a ryhthym of only spending just enough time on each element to get it right. Part of coding is not spending long on solving each individual problem, I would suggest that this method of everything being "that'll do" means when coming to a decision such as naming, the default method is to pick something and move on with your day.
I didn't quite understand this as a student, I got higher marks in programming assignments than people who'd already learnt to code out in the wild. I was a perfectionist and took way to long to get anything done to the point I swore off a career in pure development. My impression is that it's just too difficult to take too much into consideration at a line by line level. It's near impossible to get anything done with a perfectionist attitude.
I finally understood why so many finished projects seem to be great in concept but realised with a "that'll do" attitude.
Because otherwise it would never ship in time.
After logging in slashdot still does not take you back to the page you were on. It's been that way for 20 years.
Well, actually no, but my real name sounds like a cross between a lawnmower and breaking glass, and would just give you a splitting headache.
Show me some real research on the topic and I'll call it interesting. Did I mis-click and wind up on idle?
Mr quote semicolon drop table
Often I see people write the above, or refer to macros in programming as MACROS rather than macros, also they always refer to the canel case style as camelCase. It's a curious thing, because I don't see them putting the word "bold" in bold when they refer to bold text, etc. It's just odd because it's like the writer thinks that every mention of all caps must be in all caps, or every use of the word macro must itself be a macro or something.
For electronic medical records, gender is especially important for obvious reasons, but there are people who want it to be male, female, and a variety of mixes. Usually systems only implement "Unknown" as a third gender because it's just an edge case. But there are people out there who get offended by that. Mostly in California.
Buckle your ROFL belt, we're in for some LOLs.
Jennifer 8. Lee
Q: What does the "B." in Benoit B. Mandelbrot stand for? A: Benoit B. Mandelbrot
Most of the posters are missing the point. It is about the customer. Whenever you address a customer, you start with there name. If the first thing out of your mouth (or at the top of the page) is wrong, the customer is no longer thinking about your message, they are thinking about how you don't care about them enough to even get their name correct.
I have a nonstandard name (unique spelling), and I know, from personal experiance how distracting it is to have my name "corrected". My mother tells a story about how excited I was coming home from school knowing how to write my name. The next day, she had to have a chat with my teacher about not "correcting" the spelling that was on her class list.
"The most important word in any language to any person is there name"
dale carnigie
This is why nobody remembers the name of Johann Gambolputty-de-von-Ausfern-schplenden-schlitter-crass-cren-bon-fried-digger-dingle-dangle-dongle-dungle-burstein-von-knacker-thrasher-apple-banger-horowitz-ticolensic-grander-knotty-spelltinkle-grandlich-grumblemeyer-spelter-wasser-kurstlich-himble-eisenbahnwagen-guten-abend-bitte-ein-nürnburger-bratwürstel-gespurten-mitz-weimache-luber-hundsfut-gumeraber-schönendanker-kalbsfleisch-mittleraucher-von-Hautkopft of Ulm.
--Ariston
"I'm never wrong--sometimes reality just disagrees with me."
Zaphod Beeblebrox III, I presume. Pleased to meet you, my dear sir.
Excuse me, but please get off my Pennisetum Clandestinum, eh!
I do.
Its number forty ... even ./ knows this isn't the case and and deals with it appropriately and assigns "Anonymous Coward".
Peter: Whats your name?
: ""
Peter: But people have names!
: No.
Peter: So how do I call you on a football field?
: ""
to code or not to code, that is the question.
When sites suck so much to not accept emails longer than 32 characters or with "-" or "+" in them, they usually also suck to the point of doing these checks only on the client side, which is obviously easy to work around. The server may not validate the input at all!
See e.g. this (scroll down to "Now the interesting technical part"): United Airlines sucks.
There's a hidden treasure in Python 3.x: __prepare__()
is called Filips Leopold Lodewijk Maria, even though "Filips" is now considered old fashioned, and most people use "Filip" instead. Unless of course you are part of the French speaking part of Belgium, then his name is Philippe Léopold Louis Marie (note the accent).
And don't get me started on his last name.
10 ?"Hello World" life was simple then
I though the article was about the inability of programmer to remember names and recognise people, Maybe I should have read the article.
It's a real problem though - is it just me? I often know things about people (ah yes, plays squash, good at making cakes, father of that kid who rides a unicycle), but their actual name - no. It's a miracle if I recognise them at all.
Mind you, it means if anyone says "Hello" to me, I am obliged to be polite to them as I might actually know them quite well, but haven't recognised them yet - and certainly don't know their name.
It's a right pain. Anybody else suffer from this - and what the heck do they do about it? (I'd like a camera attachment what would whisper in my ear "that's Mrs Jones, her daughter, Kira is in the same class at school as your daughter. Likes chess and is obsessed with kayaking" - something tiny that could clip on my glasses, maybe).
"Cats like plain crisps"
I really do not understand why it is an issue at all. From my experience, a name is just free text. Even if it has its own rules to be formed, it does not affect the IT. I live and work in Spain, where everyone usually has his/her surname and two family names (one from his/her father and one from his/her mother) and every damn system I see has two fields for family names. Why? While it is understandable to separate surname from the first family name (*), there is absolutely no need to put the two family names separately because they are always processed together. Anyway, that continues to be done, causing unnecessary trouble with people with only one family name (foreigners) or with more than two.
I see the same issue with address. Lots of times I have to put my address as a multi-field info: Type of way (Street, Avenue, Road, etc.), the name of the way, number of the building, entrance, floor, door). And this info will just be useful to print all together (I do not think many people is doing stats based in if you live in a street or an avenue, on the B door or C door, etc.). Anyway, this is one of the things programmers over-engineer without no real reason (if you really need that information for your system, then the first thing you need is to forbid that the street name is a free text, and populate a list with all possible values).
And for the rest of the issues, it is just a matter of knowing where your app is gonna be used. If your system needs to work only in USA, UTF-8 is fine. If I happen to go there I can stand if you put my name without accents; if I go to China I can stand that the bureaucrat puts the chinese character that sound like my name in their systems). Otherwise, if you want your systems to work in France or Spain, then you need to make sure they support accents and special characters like ç, ñ. Simple as that.
* Because some surnames can be typed in a variety of forms, while family names only have one right spelling. That makes sorting from family names more useful.
Why can't
They forgot to mention that websites need the ability to upload sound files...
Fry and Laurie: http://www.youtube.com/watch?v=hNoS2BU6bbQ
Homonyms are fun!
You're driving your car, but they're riding their bikes there.
I'm continually amazed by the number of web forms that will not allow enough characters to spell the name of the California city I live in. And then some of them try to match city names - and their entry forms truncate them at varying lengths. Even major corporate websites fail spectacularly - I couldn't track an order at a major retailer because my city didn't match the city on the order. If I knew how many characters they were looking for I could truncate my input appropriately - but what the heck are some coders thinking?
Here's a handy tip: if you're allowing 16 bytes for the city name you are making a stupid assumption.
And those of you who insist that phone numbers be entered in a specific format - get a clue, would you? Databases are most useful when the data is clean and regular - but names, addresses, cities, phone numbers, etc. are not always clean or regular. As a coder, you should be doing as much data cleaning as you can when it's being input. If the database is going to be used for many years and many purposes, somebody's going to have to clean that data. If not your code, then some warm body is going to have to go over the data.
is called "Karl Theodor Maria Nikolaus Johann Jacob Philipp Franz Joseph Sylvester Freiherr von und zu Guttenberg"
http://en.wikipedia.org/wiki/Karl-Theodor_zu_Guttenberg
I tried to post that to the comments of TFA but it does not work.
Atari rules... ermm... ruled.
I find English websites are generally fairly good at handling names. At least in comparison to Japanese websites, which assume that you have a first name and last name only and often assume that your name can be written in only a few characters. They also have a nasty habit of deciding that certain characters are illegal.
It's always interesting trying to find ways to fit my 19 character full name into subscription forms on Japanese websites. Perhaps the worst one I encountered required me to use the initial of my first name using a full-width roman character (They banned ASCII characters so I had to use a roman character from the Japanese character set) and my last name written in Katakana.
My real name is P'ying O'hanrah'O'hanrahan von Frankfurt so you can imagine the problems I have.
obXKCD: http://xkcd.com/327/
http://en.wikipedia.org/wiki/The_Gods_Must_Be_Crazy
have a look at the cast list.
IIRC "!" is pronounced as a tounge-clicking sound
bickerdyke
I was born with a complicated Spanish name.
One first name.
Two second names.
One hyphenated, accented surname from my father.
One simpler surname from my mother.
One of the first things I've done since reaching majority is to give a precise, simple, standard name to everyone who asks for it:
Xxxxx Xxxxxxx
where X is in A-Z and x is in a-z. Xxxxx is my first name, and Xxxxxxx is a shortened, accent-and-hyphen-free version of my father's surname.
You know why?
Because, in life, there are lots of things one must be "unreasonable" about in order to effect progress, but accommodation of one's name is not of them. It's a tedious, selfish expression of nothing more than ego which ultimately will land you in more trouble than others: some day you will be denied access to something thanks to some computer system not being designed to handle your name, and "computer says no" gets priority over the angry demands to the immigration officer of "Joe\0\rBlogg$ 3'); DROP TABLE citizens; -- [insert spinning cube here] Jr."
If you and your friends/colleagues have some other name by which they call you, sure why not? But, as any cat will tell you, the world is best when you have three names:
(i) one for communicating formally;
(ii) one for more intimate discourse (there's no reason why this can't be the same as (i), though many people end up with peculiar nicknames); and
(iii) one personal identification which you can keep to yourself and you can't express in words.
If you want the sum of all your history, culture and personality as expressed in (iii) to be embodied in (i), you're both expecting others to be burdened with your ego and bad at understanding human communication. All I asked for was a couple of words I can use in a reasonably uniform way to easily pick/call you out from a small crowd - that's what (i) is for, after all.
tl;dr The naming of cats is both a delightful poem and an insightful account of the multiple namespaces for kitty/human names and their different purposes. Don't confuse them.
.. is Hfuhruhur-Uumellmahaye you insensitive clod !
You can also have names with spaces in them which is what catches my wife out a lot, she's got a double barreled surname only instead of a hyphen she has a space between the two. One last name made up of two separate words.
There is also the celtic tradition of using your last middle name as a first name, I know quite a few people who do this, one particularly common example in Ireland is for people to have an extra first name of Patrick although that one would never be used outside of passports and other official documentation.
And remember folks, Gnu's *not* unix.
would be a problem. It's not such a difficult thing to consider when writing software. I'm just beginning to learn my first programming language (Java) and have already written a name validation program which accepts hyphenated names. It wasn't difficult, even with my extremely limited knowledge of Java.
For a corporate site to allow such a problem is ridiculous. However, I wonder if the problem is really large enough to warrant a /. article about it. And linking to a blog post that links to the actual relevant article is about as stupid as the problem being discussed. Oh the irony.
Different countries have different rules for formatting the address. So if you know which bit is the house number, you can put it before the street (for the UK) or after it (Germany). Knowing which part is the postcode can also be useful. I don't know if credit card validation requires the right parts to be fed in the right way. But if you have teh parts separate, you can recombine them at will. If it's just free format, you can't do that.
Just because you can't see a reason doesn't mean there isn't one.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
His complaint is that the world won't jump through hoops to conform to him. CLUE BAT WHAP!
-- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
Let's teach programmers about char != byte and unicode is not always represented in 2 bytes (not even UTF-16)...
before we talked about date and name right.
You know, attitudes like yours are IMHO the root of all that's wrong with computers today. And I'm saying that as a programmer, not as Jane Grandma. The whole idiotic OCD idea that you _must_ make up rules about everything, and that your rules are more important than what people are actually trying to do. The idea that if even someone's name doesn't fit "your" database, then you can just brush them off and have a beer.
Here's some free clue: yes, you can't handle every edge case in the universe, but you'll find it's easier if you don't create such edge cases in the first place. If your database (actually more likely the program in front of it) can't handle last names with more than one capital letter, or with a dash in the middle, or which are more than 32 bytes long (which with UTF-8 might mean less than you'd think), then guess what? _You_ created an artificial edge case that had no reason to be there in the first place. Instead of handling every edge case in the universe, how about not creating them in the first place?
I find that about 90% of the problems boil down to the above: some idiot put some artificial limits or rules, that really aren't needed anywhere else. Just because he has the delusion that he's some kind of Moses on the mountain and just _has_ to come down with some rules.
E.g., he just had to define a byte limit, because he's prematurely optimizing a non-problem he doesn't understand. God forbid wasting space in the database by allowing 256 or 2000 byte strings... never mind that if he actually understood that underlying database, he'd know that a VARCHAR is not padded to that max length. If someone just entered "Alex", the same 4 bytes will be actually used in the database, regardless if the field is a defined as maximum 4, 32, 256 or 2000 characters. But nah, he has to put some restrictive number there, 'cause it looks more like he's doing some smart job.
There is hardly any reason to even use a user name for anything other than display purposes. (You do have a primary key for that record for everything else, right?) As such there is no reason to make any assumptions about it, or enforce any particular format, or anything. There's no reason to even disallow SQL keywords (just effing quote it before using it in SQL) or angular brackets (just quote it before using it in HTML.)
There is no reason to create any edge cases in the first place.
And really it's not even just about names. Names are just one case where people make up BS rules just to feel more like they did the great design job. One could make the same case for the gazillion other pointless rules imposed upon the user or his work-flow or data, not because they're actually needed anywhere, but just because some OCD idiot feels like he _must_ impose some rigid structure upon things that really have none and don't need any. But he'd just feel naked without defining that kind of rigid structure, or without imposing upon humans some data structures theory that was intended only for use by programs.
A polar bear is a cartesian bear after a coordinate transform.
The article could be aptly renamed "40 reasons to use surrogate primary keys, and why natural keys are just asking for trouble."
It's only tested against 1000 names, but I guess it's a start.
My ism, it's full of beliefs.
I.e., your response is "39. People whose names break my system are weird outliers"
And the article says no such thing. Can you point me to where the article said "People have names which are pictures and not text"? Yes, that would be an unreasonable restriction, as you're trying to conflate text with images. But none of the points the article makes come anywhere near close.
All of the points are reasonable cases. Are you seriously suggesting that the points are anywhere near as unreasonable as your example? Go on, give us an example that the article actually gives, rather than arguing with a straw man.
These are not the droids you're looking for.
Who's on first?
I hate it when some websites I sign up for can't handle a hyphen in my last name. Then you try a space which some of them seem to be ok with but others don't like. This isn't that big of a deal for most websites but when you are trying to do something important like order something and your name on your debit card doesn't match what they will allow you to type it. Then it gets annoying.
My first name is Frédéric and even in QC, Canada, I cannot enter it on some goverment web site without it being rejected for "invalid character", so for "Revenu Québec" (local IRS) I am "Frederic", and it bugs me, and if I want to correct it I have to fill papers and send proof and whatever.
Sometimes, websites accept it when I type it, but when it displays it, it is garbled as Frdric, Fridiric, Fr%E9d%E9ric, etc
I cannot believe we are in 2010 and so much websites (especially from USA) do not accept accentuated characters.
"Science will win because it works." - Stephen Hawking
I know you're probably just joking, but you provide the perfect example of the kind of BS made-up rule I was railing against in another post.
Instead of asking who'd have a name that breaks your rules, or asking them to fix their name, people should be asking themselves if they actually need that rule at all. Why would you care that the users don't have numbers in names? What other part of the program relies on making that assertion about the input data, and why?
Any programming language or database imaginable can store any combination of letters, numbers and punctuation in a string. It's a string. Virtually any standard library out there (unless you program in something like Brainfuck or Shakespeare) can deal with the string "4L3X" just as well as it can deal with the string "Alex". It can search for it, sort it, index it, print it, etc. As far as the computer is concerned, a digit is just another byte.
That's the kind of thing I don't get: why do some people make up rules for their users, that really are just unneeded in the first place?
(Maybe not _you_ specifically, but you did provide an example of something that does happen.)
A polar bear is a cartesian bear after a coordinate transform.
You just wait, when Aliens land, and their representative is named "@hjsju7ub+_^b" as their literal translation to English, and when we rename it to "Bob" in our ET database, and they see that as an assault upon their culture, and wipe us all out with their highly advanced magic weapons, your be sorry.
"# People have exactly N names, for any value of N." Sure, please let me tie your uncountable, Gaussian curve of names to that paycheck. We'll both be happier.
Here I thought they were going to give pointers about how to come up with good variable names.
Thought it would be useful.
Postal addresses are a whole other problem.
I used to live across the street from a fairly large apartment complex at:
12345 Lamplight Village.
I had a friend who lived there, and I can't count the times she complained that mail would be returned to sender saying it was an invalid address. The worst part is that it was often returned by the LOCAL post office, who should have known better.
Just because a number (or a name) "looks" fake doesn't mean it is.
There is a difference between no rules, and less rules, or even "only strictly the absolutely needed assertions." Making a BS dichotomy between excessive rules and no rules is exactly the kind of OCPD I was talking about.
More BS sophistry, or you genuinely don't know that a VARCHAR already has a 4000 byte limit in Oracle -- and YMMV in other databases -- hence not setting your own means that default, not "infinite"?
But really, I just see more false dicohotomy between setting your own restrictive limits and "infinite". If you genuinely can't see anything in between, it's your shortcoming, not mine.
Right. We can also add sarcasm to things that go right over your head.
You pick on my programming ability, yet judging by the above paragraph you never heard of dynamic allocation. You don't need to pre-reserve space for the maximum possible name, lemming. If more people realized that, not only we'd have less naming restrictions, we'd also have less buffer overflow exploits.
And space in the database... are you serious? You're proposing to restrict names just to limit the maximum size of the table? Do you also have a maximum number of customer rows, or what? Because you can run over the maximum size for the database that way too,. You do know tablespaces can be extended, right?
And, generally, it's a stupid optimization in so many ways it's not even funny. For a start, again, each individual row is _not_ saved with 3996 extra bytes if someone named "Alex" is saved in a VARCHAR(4000) field. The extra space is only used for people who literally have a name that large. Which also means you _don't_ need to pre-allocate space in the database for the case that every single customer will have a name that large. Most still won't. Someone called "Wang" will still be called "Wang". Their name won't change from "Wang" to "Wallawallabingbingdingdong" just because you set your limits higher.
It's also stupid because you're optimizing a cheap resource. If every single customer did have 4000 byte long names, and you had a hundred million of them in the database, we'd be talking about four hundred gigabytes. It's peanuts nowadays. The space in memory is a matter of how many concurrent requests you expect. Assuming actually 1000 requests in-flight at the same time on the same machine (which means tens to hundreds of thousands logged into that machine), if every one of them had 4000 byte names, we'd be talking about a whole 4MB of RAM taken up with names. Whop-de-effing-do.
And again, both are for an unrealistic worst case scenario: for most users you _don't_ actually save even a byte by defining it as VARCHAR(32), because their name doesn't grow or shrink with the size of that field.
I was mostly correct so far on systems with a realistic amount of all three. It's funny what you can do when you actually measure and calculate, instead of applying knee-jerk premature optimizations.
A polar bear is a cartesian bear after a coordinate transform.
You are not that important or interesting. Let it go and move on.
The Kruger Dunning explains most post on
How about if my name consists of the planet Jupiter. How do you fit that in the database.
Numerals are just that. They oughtn't to be used as components in names (use what you like in email addresses).
You can moan and whine that your name is a streak of dog turd located on a street in Boise Idaho but the rest of us don't have to accept that. For names expressed in English, my database is good enough.
Got an exclamation mark in your name or you've upper cased the fifth letter? Get stuffed.
Please, for the love of G-d, would you get it through your thick, Mountain Dew-addled brains that any key I can type on my keyboard is a valid character in a legal name. For instance, someone who's name is hyphenated - the hyphen is part of the name, you frigging morons.
Yes, I have issues. ;-)
-- "In order to have power, I must be taken seriously." -Mojo Jojo
In Russian, you (sometimes?) take your husband's last name, but with a different ending (instead of using Mr. and Mrs.) This led to my Russian coworker having 2 ID cards with different last names -- an Americanized one with her husband's last name, and another one with her last name as used in Russia.
I've abandoned my search for truth; now I'm just looking for some useful delusions.
I understand the original gripe about not allowing punctuation in a name. However, the author of the linked article goes overboard.
Everything relies on assumptions, especially computer systems. The blog author assumed I could read English and had a browser that could navigate hyperlinks (to anyone who wants to respond "well you didn't have to read it" - well, no one has to do anything. The author of the original linked article didn't have to use the system that wouldn't take his name.). It's only an assumption that my telephone has digits 0-9 on the keypad. It's only an assumption that my computer monitor is rectangular. It's only an assumption that I live on Earth.
Any design of any system relies on assumptions. We try to pick good ones. "Names don't have any punctuation" is probably a bad assumption, but "People have names" is probably OK. Of course, it's all a value judgement, but if you find that "people have names" to be too broad of an assumption, have fun designing the rest of your system. I hope the author hasn't designed any systems that assume I use base-10 numerals, or that I don't use script that flows from the bottom to the top of a page on oddly-numbered dates.
The article writer confuses two different concepts: names as identities and names as identifiers.
The software shouldn't care if your "real" name is {love symbol #2}, it only needs to deal with a limited subset of monikers. Government sites/databases should accept anything that you can legally put on a passport, driver's licence, etc. of that country and nothing more. Financial ones should accept names and addresses that can appear on your bank account or credit card. Private sites can set their own rules.
I suggest that, at the minimum, accept whatever is required to accurately deliver send a letter to persons in all countries you need to support. I would expect that most post offices can deal with names/addresses rendered in Latin alphabets; if not - either don't support the corresponding countries or be more flexible.
A large number of those assumptions seem, to me, to fall under 'Acceptable Breaks from Reality'. Yes, they're going to be wrong some percentage of the time, but trying to design for the use-case in which you're dealing with that small percentage case will result in a design that has traded have functionality that is useful an arbitrarily small percentage of the time for a system that is utterly unwieldy the rest of the time.
I mean, pointing out that a unicode point may not represent a letter in a name? Seriously? Listen, if your name requires an SVG code snippet to represent it, you get called "The artist formerly known as Prince". Live with it Jackass.
Pug
An Invisible Entity of Vast Power whose existence must be taken on faith alone: Liberal Media
Ahh, ya doesn't has to call me Johnson! You can call me Ray, or you can call me Jay, or you can call me Johnny or you can call me Sonny, or you can call me RayJay, or you can call me RJ... but ya doesn't hafta call me Johnson!
Raymond J. Johnson Jr.
(Bill Saluga)
However, under the normal format for names in Spanish, the guy would be the perfectly manageable Pablo Ruiz Picasso, where Pablo is the first name and Ruiz Picasso are the last names. California issues drivers' licenses for names like these correctly--I know it because I have one.
Are you adequate?
I know someone at a big firm and they have been in parsing hell for the last two months. They have legacy data for mailing addresses. A 6 by 30 character blob of text. From this they are trying to parse out First Name, Middle Name, Last Name, suffix, prefix, organization names, street address, city, state, zip, attention, in care of, and post office box.
I've been a coder since junior high school. (8th grade) The inability to remember names and the ability to recognize people appear separate. I can recognize most faces just fine. But remembering names is tough.
My guess is that social things aren't seen as important enough by geeks to spend effort on until they need the abilities.
If a coder went into technical sales, I expect their ability to remember names would, by necessity get a lot better over time.
Patriotism is no more bigotry than is favoring one sports team over another.
There are, of course, obvious exceptions to this. But I want avoid invoking Godwin's Rule.
Ancient (rich) Romans had slaves called "nomenclators" who would accompany their masters whispering the names of the people they met.
__
Men with no respect for life must never be allowed to control the ultimate instruments of death.
GW Bu
Some grammatical words, like "de" and "ma" don't exactly have a tone, unless you consider the neutral tone to be a tone. But if you do, then it's still the case that not every word in pinyin Chinese would have a number, because the neutral tone (5 in Mandarin) is usually not written.
I can't believe nobody's mentioned Johann Gambolputty de von Ausfern- schplenden- schlitter- crasscrenbon- fried- digger- dingle- dangle- dongle- dungle- burstein- von- knacker- thrasher- apple- banger- horowitz- ticolensic- grander- knotty- spelltinkle- grandlich- grumblemeyer- spelterwasser- kurstlich- himbleeisen- bahnwagen- gutenabend- bitte- ein- nürnburger- bratwustle- gerspurten- mitz- weimache- luber- hundsfut- gumberaber- shönedanker- kalbsfleisch- mittler- aucher von Hautkopft of Ulm
So is mine!
>>>I have never seen a computer system which handles names properly and doubt one exists, anywhere
The open source genealogy software PhpGedView (http://www.phpgedview.net/) handles names in an extremely flexible manner. It explicitly supports 30 languages, including several asian languages, and has certainly been used with names from many more cultures (because of immigrant ancestors). Multiple names, aliases, married names, no known name - I have never seen or heard of a situation it cannot handle.
Verbum caro factum est
My name is McMac, you insensitive clod!
Cheers,
"What in the name of Fats Waller is that?"
"A four-foot prune."
These assumptions aren't unique to computer programs. I've filled out many paper forms for work, school, etc... that expected you to have a first name, last name, and middle initial. Sometimes they would give you little boxes for the letters, thus limiting you to a finite number of characters.
Clearly, they need to add a check box that says "I don't have a name."
He's somehow defending a belligerent flavor of multiculturalism with this interminable rant about namespaces. That's what they are: simply placeholders. They are the key to the hash-table. Although through time and experience we value the key, it still remains the key to a respective value. It serves a lingual and communicative function.
I am not intolerant of different cultures, just of over-doing it.
Completely unrelated, but somehow related.
What Every Sci Fi author thinks make an alien name:
The combo of a consonant(s) followed by an apostrophe then a string of consonants and more apostrophes makes a good alien name: Kj'Arp'Tan.
Aliens can't have names that when pronounced sound like Bob, Ted, Alice.
Many aliens are like Cher and have only one name: Spock
Warrior races naturally name themselves like Vikings: K'arg Son of B'Jark (K'arg B'jarksonn).
Warrior races will use the Spanish naming P'llk'nrm'stk y S'nchz y G'tr'ez y M'rls y J'hnsn
You could never pronounce my family name, your adams apple would explode, says the alien with oddly humanoid outfitted vocal arrangement.
Politics is the art of looking for trouble, finding it everywhere, diagnosing it incorrectly and applying the wrong fix.
I worked in registration in an emergency room in college, and I'd frequently have to spend my trying to find people in our systems because a lot of these "special cases" couldn't figure out which name they wanted to go by. Annita Marilyn Anderson-Michaels (made up) would tell me she was everything from Ann Michaels to Mary Anderson depending on her mood, then she'd get divorced, not tell us, and get angry when our system didn't have her. People would have completely different names on their drivers licenses than we had on file. Keep in mind, this was in an emergency room so people tended to not be at their most rational. As a grunt, I spent inordinate amounts of my time resolving these issues. Forget the Chinese breaking ASCII, if people here just decided how to write their name and understood our database isn't magical I would've gotten a lot more work done.
...one named YOU!
Say it right: "Nuc-le-ah Powah".
The biggest thing about names, which does not seem to be addressed, is that naming in systems (at least for America) means a LOT because of the need to remove duplications from data sets.
This is a very hard problem, and in the end everything the author states is correct to a point, but he misses a larger point.
It does not matter, in the end, what naming scheme is being used, as long as you treat the parsing of the name in some non destructive generic way that is consistent.
It doesn't matter that MacLean and McLean, or Mac Lean are all structurally different, all that matters is that when you are doing your matching they all are all managed in the same way.
IE Bob Mac Lean, parses similarly to Robert Mac Lean, which parses similarly to Robert McLean.
And you can play games with how you are doing the matching by simply creating them as full names as well, and doing other aspects of data hygiene/harmonization (whatever nomenclature you want to use).
Here is a caveat that is implied. Names only matter in matching, names that do not matter in matching are for display purposes and you just use some common method of capture. The Name Prefix, First Name, Middle Name, Last Name, Suffix format is always correct for this if your system has to be multi national. Multi national users of your site are going to be used to putting some consistent-ish thing in these fields, so dont worry about it.
If you don't vote, you don't matter, so don't waste your time telling me your opinion
Ah... I am fond of GMail aliases. Naturally, many times I have encountered the unsubscribe issue you describe; however, I have often emerged victorious (victory!)
You will often find that the unsubscribe links (or a GET-based form submission) will result in a URL. Workaday morons often forget to consistently URL-encode their input. They build an URL encoded query string, but they take your email address as a string literal. Bizarre.
So, your "foo+bar@gmail.com" will often be misinterpreted as "foo bar@gmail.com", thus confusing their system (space character encodes as +). Fortunately, you can take the high path with these drooling simps by simply adding the missing URL encoding feature for them: '+' encodes as %2B.
Change the salient part of the URL to be "foo%2Bbar" and you should expect a warm feeling of superiority to wash over you. Oh, yeah, and it will finally kill that fucking spam those morons keep sending you.
HTH. Don't forget to send nastygrams to their customer service departments about their moronic devs.
This guy seems obsessed about names with regard to them being entered into various systems. I think the author is a kook or cuc or KoOk or cooc.
Your Master "goes down for the count"@ the URL below:
http://it.slashdot.org/comments.pl?sid=1687452&cid=32609448
Your Master ran, rather than disproving the points he was challenged to do so against ...
I.E.-> When he is asked to disprove points in rebuttals others send back his way? Well, take a peek over there, and see Your Master "run, Forrest, RUN..." (lol, TOO easy!).
APK
P.S.=> Well - I'll be waiting over there for you to show up & disprove all of the points I put YOUR WAY, and Kalriath's as well, here -> http://it.slashdot.org/comments.pl?sid=1687452&cid=32589278 ... Good LUCK (you'll NEED it)... apk