
We have an employee whose last name is Null. He kills our employee lookup (2012) - ambuj
http://stackoverflow.com/questions/4456438/how-can-i-pass-the-string-null-through-wsdl-soap-from-as3-to-coldfusion-web?rq=1
======
patio11
A Japanese company once made the decision that they needed "virtual" employees
in a particular system, for example to support e.g. adding a job to the org
chart before that position had been filled (and another dozen use cases), so
they had the clever idea "Hey, if we need to do this, we'll just input their
'name in Japanese' as one of a dozen status flags, like XX_JOB_REQUEST or
XX_INCOMING_TRANSFER."

One developer at this company, who was annoyed with having to tweak a
particular system every time they added a new possible status flag, wrote code
which was, essentially:

    
    
      if (InternalStringUtils.isAllLatinCharacters(employee.getJapaneseName()) {
        /* no need to pay this 'employee' so remove them from batch 
        before we retrieve bank details for salary transfers */
        ...
      }
    

Do I have to explain why I'm aware of this curious implementation choice?

~~~
seanmcdirmid
Many systems in China depend on your Chinese name and identification number.
Suffice it to say, foreigners who work in China don't have either of these: a
made up Chinese name is not meaningful or legal (China also lacks any kind of
kana), a passport number is not a "valid" ID number and changes every 10 years
anyways. I don't get to use many online services accordingly, and every year
there is some problem with how they handle my last name (MC DIRMID, there is a
freaking space after the MC in my passport, causes all sorts of problems).

~~~
foobarian
When I worked in Taiwan they came up with a Chinese name for me and gave me a
little official wooden stamp I could use to "sign" official documentation. The
name was indeed useful to fill in all sorts of forms that expected the Chinese
format. That was a neat time.

~~~
jamesofur
I'm picturing this as a character saying 'silly blond english man' or along
those lines.

~~~
eru
鬼佬 (Gweilo). Or, where I live now, 红毛 (Ang Mo).

------
glimcat
As long as we're playing the "Falsehoods Programmers Believe About Names" game
again, here's the relevant patio11 article:

[http://www.kalzumeus.com/2010/06/17/falsehoods-
programmers-b...](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-
believe-about-names/)

If you try to validate names, or if you don't safely escape names along with
your other user-input strings, you're gonna have a bad time.

~~~
mjn
One thing that's annoying to me is that governments and employers increasingly
believe many of these things, partly because they want to cross-reference
names and match canonical forms.

My given names in English are Mark Jason, and that's on my birth certificate.
In Greek, they're Μάρκος Ιάσονας, which are the equivalents, and that's on my
municipal birth records there (registered as a foreign birth at the time of
baptism). There seems to be a move towards wanting to use "accurate"
transliterations, though, rather than the more traditional method of
translating names to equivalents (Mark<->Markos, George<->Georgios,
Paul<->Pavlos, etc.). Sometimes people desire that: maybe someone named Михаил
in Russian really doesn't want to be turned into Michael, but wants to go by
Mikhail. That's fine, if they prefer. But in my case, I consider each of these
translated forms to be my name in the respective languages, and do not
consider the transliterated forms to be my name.

But in trying to sort out some paperwork, it appears that what I am _supposed_
to do is one of these two things: 1) change my name in English from _Mark
Jason_ to _Markos Iasonas_ , the transliteration of my Greek name; or 2)
change my name in Greek from Μάρκος Ιάσονας to Μαρκ Τζέισον, the
transliteration of my English name. But I don't want to do either of those
things. #2 in particular is ridiculous, because it doesn't decline properly,
and is trying to approximate a 'j' sound with 'tz'.

~~~
R_Edward
Growing up, my parents called me by my middle name, as I share a first name
with my dad. (I'd rather be an Edward than a Ralph anyway.) When giving my
name to someone, I tell them I'm Edward <Lastname>, as telling them I'm R.
Edward <Lastname> just sounds pretentious. But if I'm beginning a relationship
with a doctor's office or lawyer, or filling in a tax form, it's Ralph E.
Lastname, because that's what's on my birth certificate and SSA record. It is
quite annoying when the phone rings, and I don't recognize the calling number,
so I answer with a guarded, "This is Ed..." and hear the caller ask, "May I
speak to Ralph?" and have to explain to them that I really am Ralph, even
though I said I was Ed. But I have to say, my problems are _nothing_ compared
to yours!

CSB: My mom signed me up for a book club when I was 6 or 7. For the Firstname
field, she wrote, "R Edward" for reasons known only to her. For the next three
years, every couple months, I'd get a package addressed to Redward <Lastname>.
I could just imagine the shipping clerk in that company reading my shipping
label and saying to himself, "Redward... what a goofy name."

~~~
kimlastname
My name is Kim <Lastname> and I'm a male. Try convincing Americans (and other
English speaking countries) about that...

One example: Many years ago I subscribed to TIME and filled out a form where I
checked "Mr." Apparently the person who typed in my name decided to "correct"
this error and I became a "Mrs."... and I wasn't even married :-)

The company I work at has offices in different cities, so most of the
communication are done by email and instant messaging. I see a clear
difference between the messages from people who know my gender, and those who
probably think I'm female. Even attempts at flirting...

~~~
shirro
I went to school with a male Kim in Aus. Never even realised it could be a
girls name until the 80s when there were several female singers called Kim.
Lots of male names seem to become girls names. Ashley is another that seems to
have been lost in living memory. Apparently Shirley was once a male name and I
am not joking. Between that and boys once wearing dresses until breaching
along with pink clothes and long hair and time travel must be really
confusing.

~~~
D_hemming
All the Ashley's I went to school with in the 70s were boys. I often wonder if
it's an issue for them these days...

------
jjindev
Reminds me of a story a police reservist told me. Guy got a license plate
caled "none," and instantly had thousands of outstanding warrants. (The cop
thought "none" was trying a fast one, and so deserved it.)

~~~
andrewflnr
What do you know, there's an xkcd for that too:
[http://xkcd.com/1105/](http://xkcd.com/1105/)

~~~
thelukester
If I could change one thing about human history, I'd remake the 0 and O's (#
and letter) and the I, l, and 1 (letter i, letter L, and #) so you could never
confuse them in hard to read CAPATCHs.

~~~
Keyframe
Depending on the font sometimes even 5 and S and 8 and B too.

~~~
lostlogin
Having 0 and o next to each other on a keyboard is great too.

------
chiph
We had a customer with the last name "Echo" who couldn't make a credit card
payment. Turns out that the card processor was looking for strings which were
common Unix commands and not allowing them.

~~~
83457
Security procedures for vendors hosting websites for Members of Congress
apparently require them to look for sql injection attacks and redirect to 404
if they think one was found. The result appears to be that many just keep a
list of keywords and characters and fail if found. Is your first name
"Walter"? Oh, you tried to run the "alter" command in your message to your
Congressman... we will take you to a 404 page. Oh you used semi-colons and
single quotes in your message? ...hacker alert! off to blank page with you.
Completely inconsistent between vendors/forms of course.

~~~
mrweasel
The system that prints our shipment labels stripped "var" from customer and
street names. Sorry Halvar, you're now known as Hal. Customer names wheren't
so bad, the mail service got the right people anyway, but reducing streetnames
like "Vardegade" to "degade" is a bit more troublesome.

They never told me what the bug was, only that they fixed it. I have some idea
though.

------
skrebbel
This problem isn't about funny employee names. It's about thick, untransparent
software stacks that make simple problems difficult.

SOAP is maybe the most popular example and this is really why it's lost
popularity against REST. However, similar "It works with values W, X, Y, but
not Z" situations are found in any stack or standard that has too much magic
going on. Rails certainly comes to mind.

This is the biggest argument in favour of using many small, isolated
components rather than one big all-encompasing framework, in my opinion. If
every piece of third party functionality you import into your project can be
easily understood, problems like these shrink in size, because there's a limit
to how deep the magic can go.

I'm very fond of the Node.js ecosystem for particularly this aspect (even
though I dislike the language). There's a big bucketload of tiny components
there, rather than 90% of the community relying on a single humongous
framework, like is common for e.g. Ruby or C#.

~~~
macspoofing
>It's about thick, untransparent software stacks that make simple problems
difficult.

In this case, the flex framework is handling the marshaling/unmarshaling
process incorrectly, but these are not simple problems. Handling things like
names, or dates is deceptively difficult.

>There's a big bucketload of tiny components there...

Are you sure that's a good thing? First, anything works when you have a small
code-base, and a significant portion of JavaScript ecosystem involves building
fairly small self-contained applications. I have a strong feeling micro-
frameworks fail hard when the line count gets over a certain threshold.

------
xxpor
"WSDL (SOAP) from AS3 to ColdFusion web service"

I know it probably wasn't this guy's choice, but whooo boy.

~~~
sdoowpilihp
For all that is wrong with flash as a platform, I have always found
Actionscript 3 to be a far better structured and easy to work with language,
compared to something like javascript, which has a very 'organic' structure.

I can't speak much to ColdFusion or WSDL though.

~~~
tracker1
I think in this case, and the comments seem to confirm, that it's an issue
with the SOAP/XML encoder's handling of null values. That aside, AS3 doesn't
bug me too much, my biggest issue with Flash/Flex was how it handled
programmatic audio elements so differently from video/clip elements, that
is/was annoying.

Of course since Adobe has all but abandoned the platform, it probably won't be
much of an issue in the future... Kind of a shame, as Flex was actually pretty
nice. If adobe was more open with the flash client as a platform, and focused
on the tooling (where they make their money), it could have been integrated
into browsers, and had a much better chance of sticking around.

~~~
sdoowpilihp
There was a point where Adobe had a chance to evolve flash into a platform for
creating HTML sites and applications (much like coffeescript, LESS, or any
other intermediate might be). It certainly would have involved open sourcing
large components of the platform, which they seemed to be against.

It's a real shame, since the closed source aspect of Flash really led to a
brain drain within the community. Flash for many years was the superior
platform for making complex web applications, but sadly, it did not have the
community and brain trust that more open standards did, like HTML and
javascript did. In the long run, this led to serious stagnation with the
platform.

------
1qaz2wsx3edc
Ah, we call him little bobby tables.

[http://xkcd.com/327/](http://xkcd.com/327/)

~~~
ChikkaChiChi
Beat me to the obligatory Bobby Tables joke.

~~~
masklinn
Of course both of you were already thoroughly beaten by SO's own comments.

------
solox3
Numerous bugs on github were attributed to the guy with user name 0. He
evaluates to false in many PHP applications, too.

~~~
gtaylor
Ditto for Python (int 0 at least).

~~~
dorfsmay
Weird, because makes a distinction between int and string.

~~~
masklinn
Python makes a distinction between types, but it has a concept of falsyness
(as do many languages, though it is often more restricted e.g. in Ruby only
false and nil are falsy IIRC).

Falsyness is used in boolean-ish contexts (if, while and explicit boolean
conversion), by default all of None (null), False, 0, 0.0, "" (the empty
string, unicode or binary) and empty collections ([], (), {}, set()) are falsy
and although UDTs are "truthy" it can be overridden.

This has nothing to do with making the distinction between ints and strings.
You could actually implement the same thing in e.g. Haskell (by creating a
"Booleanish" typeclass and implementing it on all the types you care for).

edit: please note that — in Python — 0 (the integer) is falsy but "0" (the
string containing a single character 0x30) is truthy. I expect gtaylor talks
about bugs in handling of IDs or sequence numbers and the like, not usernames.
I know I've hit them when not being very attentive.

~~~
Dewie
GForth uses 0 for 'false' but -1 for 'true'... that confuses me a lot.

~~~
IanCal
I suppose it's because then it can just compare the first bit.

------
benjamincburns
Just took a few minutes to look into it. Found a gnarly bug in the AS 3.5
XMLEncoder class[1]. Type coercion strikes again!

1:
[http://stackoverflow.com/a/18000768/203705](http://stackoverflow.com/a/18000768/203705)

~~~
benjamincburns
Just a quick update: it wasn't a coercion bug. Instead, XML.appendChild seems
to do nothing if passed the string "null".

------
manojlds
A website I was building, which depended on a ColdFusion service, started
breaking for Norway users. Why? Norway's country code was "NO" \-
[http://stacktoheap.com/blog/2012/12/19/why-a-feature-of-
our-...](http://stacktoheap.com/blog/2012/12/19/why-a-feature-of-our-website-
stopped-working-for-norway/)

------
kabdib
I had an aunt named Nan, I wonder what her disbursement checks were like :-)

~~~
tomasien
I have a friend named Nan, and I posted every "NaN" error I got in my code on
her Facebook wall for about a year. She hated it.

~~~
jjindev
plot twist, my friend's anglicized name is Nan, but in Vietnamese I think it
is a number. (nth birth)

~~~
thanhquanky
năm is number 5 in Vietnamese, not Nan

------
ja27
Vaguely related but we had a customer using some feature that split text blobs
using a record separator. One time someone wanted to not split at all and set
separator="none" without bothering to look up how to actually turn off record
splitting. It worked well enough in quick tests, but by the time we'd gotten
the support call, they'd corrupted a massive database where every product with
a description containing the string "none" was now corrupted.

------
hasOwnProperty
Mr Null is my cousin. He breaks the backend, I break the frontend.

------
D9u
I've got a friend whose last name is Null, and he used to have all kinds of
issues with the phone company...

Obviously if your lookup app is having a problem with using "Null" as a string
then you have data type issues.

It's not rocket science.

------
dorfsmay
If my last name were Null, I'd totally call my son Dave!

~~~
ratsbane
Or Devon. Dev for short.

~~~
message
www.linkedin.com/pub/devon-null/73/ab3/a46

------
wmil
There was a DailyWTF article years ago about a "Robert Null" who would be
shown whenever you searched for employees with a blank input.

[http://thedailywtf.com/Articles/Paging_Dr_0x2e__Null.aspx](http://thedailywtf.com/Articles/Paging_Dr_0x2e__Null.aspx)

------
joshbaptiste
[https://news.ycombinator.com/item?id=3900224](https://news.ycombinator.com/item?id=3900224)

------
NelsonMinar
SOAP: the gift that keeps on giving. I built two SOAP APIs for Google (Search
and AdWords) and spent way, way too much time on this kind of data interop
nonsense. I wrote up a quick summary of why SOAP sucks, it's still my most
popular blog post.
[http://www.somebits.com/weblog/tech/bad/whySoapSucks.html](http://www.somebits.com/weblog/tech/bad/whySoapSucks.html)

XML is a terrible encoding for data. Fortunately JSON does pretty well and has
mostly replaced it for new stuff.

------
shmerl
Why would null be confused with "null"? It shouldn't be a problem.

~~~
kabdib
Welcome to the world of

(a) standards

(b) poorly implemented standards

(c) poorly implemented programmers :-)

~~~
mrleinad
I blame c. Those mothers should learn how to implement their programmers.

~~~
ethomson
Funny, I read this as "I blame C [the language]". I was taken aback because
obviously "null" in C is a 5 byte character array and would never be confused
for NULL.

~~~
shmerl
Hehe, I red it the same way first. In C NULL is clearly not the same as
"Null".

------
rumcajz
Having observed corporate culture for quite a while, the most likely solution
seems to be to fire the employee.

------
IvyMike
Offer him a substantial bonus to change his name.

You could Kickstarter the money with donations from database admins around the
world.

~~~
nicholassmith
Then he might end up stuck when he tries to change his name and discovers the
government office that do it also don't escape names properly.

------
pixelcort
I recently moved to Japan. My name, as it appears on my passport, is 26
characters long and consists of a-z letters and spaces. This means I run into
three problems:

First, many computer systems here can't fit names that long, leading to
truncation, or in some cases, denial of account creation (some places have
rules that whatever's on the account must match exactly what's on the
passport; one was nice enough to add a new column to their database for the
rest of my name).

Second, many systems don't support a-z, so we throw the name in as katakana or
double-byte romaji, depending on what works. Sometimes neither will work, and
we just have to give up and go somewhere else.

Finally, many computer systems can only link accounts if the names match
exactly, for example inter-bank transfers and bill payments. Since my name is
truncated differently in different places, and is formatted differently in
different systems, in many cases it's just impossible.

For example, right now I'm charged a fee for transferring money between two
bank accounts, since the free transfers only apply if the names match exactly.
I just withdraw cash from one and deposit it into the other as a workaround.

Another example is my cell phone bill. To pay it by CC my name must match
exactly, but all my cards have slightly different spellings.

Don't even get me started on my wife, who is ethnically Japanese but came with
me as a foreigner and hence has a name written using a-z letters. It literally
has set of fraud detection systems.

------
eshvk
My last name has a space in it. The three years that I have filed paper taxes,
IRS has split up my last name into two words and put one of them as my middle
name. This despite the fact that I clearly label the middle name box as "n/a".
I was told by the IRS representative that I should change my name.

------
superflit
Well Imagine a person has two 'first names' plus his surname of his mother and
by last the surname of his father. Something as

XXXX XXXX YYYY ZZZZ

The Visa papers does not support 'large' names.. So he has to abbreviate..

Imagine this guy has the same last name and first name of FBI wanted list.

Now, after sep - 11 everytime he has to go to the 'vip' room at border and
there is large confusion as visa papers do not 'support' longer names...

This is US...

Not complaining but can the Prism people flag work it out ;)

------
levosmetalo
I remember having "funny" situations with with AS3 SOAP marshaling and
unmarshaling. For example, in same cases it would just fail silently,
providing half populated objects without without any errors. In the end, the
workaround was to just invoke SOAP methods directly using HTTP and just
manually parse XML response. Good old days.

------
WalterSear
I have now decided to change my name to Null Undefined.

------
azurelogic
I always wondered if this ever happened. Fantastic.

------
United857
On a similar note: our company's name ( [a•mo•bee] ) has non-ASCII characters.
It has exposed bugs in more than one website...

------
lee_cardona
Is it just me, or is this possibly the best HN post title ever?!... freakin
awesome.

------
kogir
I find it sad that the correct answer talking about the nil=true attribute is
last.

------
visarga
Just use an alternate UTF8 character for one of the letters of the name.

------
neutronicus
Oooo. Maybe we'll have a postmodern Ellis Island type situation.

------
pertinhower
Not even reading the article. Just upvoting for the title alone.

------
jordhy
Just change his name to _Null_ and move on with your life.

------
bougiefever
Are his initial M. T.?

------
FrankenPC
Whatever you do, don't move him to the DEV group.

------
zwischenzug
There's a town in China called Nan...

------
hcarvalhoalves
This is better than fiction.

------
soheil
I bet his first name is dev.

------
Zedronar
Just fire the guy.

------
dgbsco
Jerry Droptable.

------
adrianlmm
COALESCE(LASTNAME, ''), how hard is that?

~~~
masklinn
That's a nonsensical suggestion, the guy's name is the string "Null" which is
munged by some intermediate system, if you're looking for Mr Null you don't
want to get people with empty names back.

~~~
adrianlmm
Haha I get it now.

------
knodi
Little Bobby DROP_TABLE

------
galenward
We have an engineer whose name is "john; drop table users." Man does he wreak
havoc.

~~~
MiguelHudnandez
Without the apostrophe to escape the string, it just doesn't have the same
magic.

