
List of falsehoods programmers believe in - edward
https://github.com/kdeldycke/awesome-falsehood
======
andrewstuart2
If we really aspire to be an information-driven culture who makes informed
decisions about important topics, we really ought to curate lists like these
down to actual informed discussions on the items in the list.

Printing out a list of "falsehoods" littered with personal opinions and
calling them "demonstrable" [1] without a shred of evidence is not going to
contribute to general knowledge. There may be some utility in getting me
thinking, but for the most part I just find it self-aggrandizing. For what
it's worth, I do find this [2] format much more helpful. I'd very much rather
see valid counterexamples proving a sweeping statement false than yet another
sweeping statement that happens to cover a few sweeping statements.

Of course, the above is my personal opinion and may not be shared by the rest
of the community, but _please_ can we do better than curating a list of lists
we agree with?

[1]
[https://chiselapp.com/user/ttmrichter/repository/gng/doc/tru...](https://chiselapp.com/user/ttmrichter/repository/gng/doc/trunk/output/falsehoods.html)

[2] [https://www.mjt.me.uk/posts/falsehoods-programmers-
believe-a...](https://www.mjt.me.uk/posts/falsehoods-programmers-believe-
about-addresses/)

~~~
benchaney
Not only that, but a fair number of them are actually true statements (e.g.
People have names). I can only assume someone got overzealous trying to
prevent assumptions about other cultures, but I still don't really understand
the train of though that lead to their inclusion.

~~~
stevula
It is fairly common for newborn babies not to have names, which can cause
issues with medical record systems. In most cases a workaround is used, such
as "Baby {{Lastname}}". In the US, I suppose, the baby would at least have a
last name, so not entirely nameless.

~~~
DashRattlesnake
That's also an example where trying to model the strict reality (having no
known name) might be worse than just using a workaround in a simpler model. As
long as system acknowledges that different people can have the same name and
duplicate profiles may be found and need to be merged, John/Jane Doe and Baby
<Lastname> seem perfectly fine to me.

~~~
sli
> That's also an example where trying to model the strict reality (having no
> known name) might be worse than just using a workaround in a simpler model.

A bit of an orthogonal example to the thread, but I ran into an issue like
that, with a solution that worked just like you described. I was using msgpack
in Python 3 to send data to the browser in JSON format.

msgpack in Python 3 decodes into bytes, as (hopefully) expected by Python 3
users.

Except the data was somewhat arbitrary in terms of how it was organized or
what was included (but was predictable in type), so decoding it was a bit of a
pain. The problem of course was that my strings were wrapped in b'', and that
was being sent to the browser, causing the JSON parsing in the browser to
fail.

My first two attempts were recursive algorithms that would try and decode
strings and skip everything else (we only worked with strings and numbers, or
lists of strings and numbers, hence "predictable in type"). Both times it
_almost_ worked, but didn't. Even with predictable types of data, I had to try
and cover a number of edge cases.

The solution that ended up working 100% of the time in my particular case was
just using regex to remove the occurrences of b'' from a string version the
object, then send that as JSON. Looked like an ugly hack, and probably was,
but it damn sure worked like a charm. It was much easier to just ensure I
built a valid dictionary before encoding it with msgpack rather than try and
"properly" decode all the strings after decoding it with msgpack.

~~~
ptx
You could subclass the _json.JSONEncoder_ class (and implement the _default_
method) to decode bytes objects, along the lines of the example in the
documentation:

[https://docs.python.org/3.5/library/json.html](https://docs.python.org/3.5/library/json.html)

------
bshlgrs
This list is an awkward mix of posts containing easily-verifiable but
surprising claims about various technical specifications, and posts which just
make a variety of contentious claims with no particular evidence provided (I
think the economics one is possibly the worst).

~~~
nostrebored
Falsehoods programmers believe about gender is a pretty great example.

~~~
firepoet
A great example of what? From what I read in there, each of those falsehoods
is verifiable. Which one(s) (is/are)n't?

------
vorpalhex
There's a danger in mixing technical spec information (a phone number can
contain non-numeric characters) and non-technical spec information (women...).
Some falsehoods are provably correct/incorrect, statements about people don't
fit into that mold.

~~~
zubat
All the falsehoods texts discuss the same kind of issue: the domain doesn't
match the model. And computer models are imperfect a priori for modelling
empirical data(natural language, human identity, relationships, continuous
functions, physics calculations). We can get those closer in approximate so
that the error is negligible, by testing, collecting feedback about our error,
and iterating on the model. All of these - even the genders and natural
language - can be tested for error, we just can't ensure 100%, and our
measurements for the human things necessarily rest on sampling opinion.

------
elcapitan
Ok, that list is awful, with all the ideological nonsense.

But besides that, for stuff that is actually empirically testable and relevant
it would be nice to put them into a unit-testing library to automatically
check certain functionality you build (for example to check functions that
deal with time or dates or names).

~~~
AvenueIngres
The sociological "falsehoods" of this list ought to be renamed:

"Postulates I choose to consider as universal and objective truths as to
silence any discussion or debate around them"

or

"List of opinions I have that are facts by virtue of being on this list"

Of course, _you 're wrong_ for disagreeing with OP.

~~~
Nomentatus
The lists are cautionary tales, things to consider before you code. "May those
who have never sinned ignore these posters, suggestions, and lists."

------
song
Was reading the post about names... My girlfriend has a family name with two
letters. In Asia, it's common enough so it's not an issue but in Europe there
are some systems that refuse my girlfriend's name because it's too short.

It's kind of frustrating.

~~~
autoreleasepool
Interesting. I'm curious, what's her usual workaround for this problem?

~~~
song
Her first name has two parts, so she just combines the first part of her first
name with her last name. It's incorrect but still matches more or less what
she has on her password.

~~~
fru2013
>password

Typo? or Freudian slip :)

~~~
CamelCaseName
Hahaha, most likely pass _port_!

~~~
song
yep, was supposed to be passport :)

------
stinos
Most of these things are more about 'not knowing' ot 'forgetting to take into
account' than 'not believing'? (not a native English speaker but surely those
are not the same semantically right?)

~~~
abraves10001
Yea, as discussed in other parts the idea that programmers believe "People's
names do not change" is demonstrably false. I am a programmer, I understand
names change but you are right, there is a chance I don't account for it.

Semantically believing something is false != I didn't take it into account.

------
camus2
There is some obvious "activism" behind such list, mixing valid technical
specifications, politics, opinions and gender theory. But I guess it is a
political correctness guide for people who believe in a specific political
line, also a way to shame publicly those who do not by using that list as an
argument of authority.

~~~
MatekCopatek
You seem to imply that there is a non-political, non-activistic way of doing
it. How would that work?

Because from where I'm standing, if you e.g. implement gender as binary,
you're not being more objective, you're just supporting the opposite side of
the people you perceive as activistic.

~~~
nostrebored
Which is exactly the point: it's not a falsehood it's a contention. Listing
your political beliefs as truisms without explanation isn't just lazy, it's
annoying.

~~~
Drumlin
They should at least put a warning when it's opinion and not fact. Programmers
with a limited world view may end up following these instructions - putting
themselves at risk for taking a stance on sensitive cultural and political
issues.

------
komali2
>Time passes at the same speed on top of a mountain and at the bottom of a
valley

Woah, what? Like, they're talking about effects of relativity because someone
is traveling "faster" as the earth spins at the top of a mountain?

~~~
AckSyn
Time dilation of everyday life is so small that it's not detectable to all but
atomic clocks, over the course of your entire life. So the differences between
10 miles is so negligible it doesn't even exist as an issue.

~~~
komali2
Why would it be relevant, then, for a programmer to know that?

~~~
manarth
A programmer working on something like the OPERA neutrino experiment would
need to account for those factors [1].

GPS devices also have to account for relativity [2], so programmers working on
those also have to factor that into the logic.

[1] [http://www.telegraph.co.uk/news/science/science-
news/8905322...](http://www.telegraph.co.uk/news/science/science-
news/8905322/Speed-of-light-experiment-was-wrong-after-all.html)

[2] [http://physics.stackexchange.com/questions/1061/why-does-
gps...](http://physics.stackexchange.com/questions/1061/why-does-gps-depend-
on-relativity)

------
patmcguire
"tax - A PHP 5.4+ tax management library"

What?

~~~
kdeldycke
Libraries trying to solve these falsehoods are considered good candidates for
inclusion in that list: [https://github.com/kdeldycke/awesome-
falsehood#libraries](https://github.com/kdeldycke/awesome-falsehood#libraries)

------
z3t4
If we are to remember the truth, it's better to list the truth rather then the
falsehoods.

Example: Partner says "Don't buy the red one", then a few days later you go
and buy the red one, while you should have bought the blue one. It would be
better if your partner had said "Buy the blue one".

~~~
Piskvorrr
There's the rub: if trying to implement, e.g., the whole Names thing, you'll
find that the requirements are impossible to satisfy - if you avoid the Scylla
of one, the Charybdis of another will get you. The point is to _be aware_ of
the limitations, and know which ones you are accomodating, which you are
avoiding, which you are breaking, _and why_. The other option is akin to "MEH
EVERYTHING IS UPPERCASE ASCII CHARACTER OR A SPACE NOTHING ELSE MATTERS",
which sounds a bit...backward...in 2017, and _will_ come back to bite you.

------
pavel_lishin
One interesting question from [http://haacked.com/archive/2007/08/21/i-knew-
how-to-validate...](http://haacked.com/archive/2007/08/21/i-knew-how-to-
validate-an-email-address-until-i.aspx/): is “Fred Bloggs”@example.com
actually a valid email address, given that the plain ascii double-quotes seem
to have been converted to "fancy" ones by the blogging software?

~~~
jcranmer
It is a legal email address per RFC 5321.

In practice such email addresses are not possible in many server
configurations, and it usually makes sense to reject such email addresses.

~~~
Bartweiss
How is it legal per RFC 5321? The quotation marks are notionally valid, yes,
but as posted it had the ASCII double-quote (legal) converted to stylized left
and right quotes (non-ASCII, illegal).

~~~
jcranmer
I assumed that the question being asked was is the style with ASCII quotes
legal.

If the question involves the use of the non-ASCII quoting style, the answer is
more muddled. RFC 6531 generally repeats the RFC 5321 mantra of "don't
interpret the local-part", prohibiting only ASCII C0 control codes explicitly
[1]. RFC 6530 suggests that C1 control codes should also be prohibited, and
suggests that non-NFC is highly likely to cause problems. It further suggests
that NFKC-normalized and excluding punctuation and whitespace is risky.

In general, a lot of email address handling advice requires ignoring what the
dictums of the RFCs state. You should treat email addresses as case-preserving
(i.e., compare ignoring case but don't change the case), and it's inadvisable
to have a case-sensitive email server. Similarly, quoted local parts and
domain literals should be rejected by almost all software that's not in the
guts of the email system. Extending similar rules to EAI is difficult because
it's unclear how the system will work in practice, but my libraries start by
force-converting the localpart to NFC.

[1] The actual text is "ASCII graphics or control characters." This could be
interpreted to mean "(ASCII graphics) or (control characters)" or "ASCII
(graphics or control characters)." Given the text of RFC 6530, assuming that
C1 is forbidden should generally be a safe assumption.

~~~
pavel_lishin
> _I assumed that the question being asked was is the style with ASCII quotes
> legal._

My question was actually about the fancy quotes; I found it amusing that they
got fanci-fied by the blog software.

------
waynecolvin
Wait a moment, they have a Falsehoods series on all sorts of subjects. The
Fake News fact checkers are going to try globbing on to every niche they
can...

------
laurentdc
> The shortest path between two points is a straight line

uh?

~~~
abraves10001
Right?! Even on maps it is true.

It doesn't mean that there is a viable route on that line or that that line is
the preferred one.

That one is really bad, imo

~~~
jcranmer
Depends on the map projection.

On the surface of a sphere, the shortest distance between two points is along
a great circle route (which is the equivalent of a line in spherical
geometry). Polar map projections preserve straight lines as great circle
routes, but, e.g., Mercator projections do not.

If you're looking at a 5 km × 5 km topo map, the difference isn't particularly
significant. If you're looking at a map of Europe or the United States, it is
(note that many airline routes seem to follow curved lines--it's because the
shortest distance is that curved line).

------
DashRattlesnake
When it comes to "curated" list like this, the who the curator is more
important that what they curate. Who is Kevin Deldycke, and why should I value
his judgement?

------
ZenoArrow
>"Falsehoods Programmers Believe - A brief list of common falsehoods. A great
overview and quick introduction into the world of falsehoods."

[https://spaceninja.com/2015/12/08/falsehoods-programmers-
bel...](https://spaceninja.com/2015/12/08/falsehoods-programmers-believe/)

>"Falsehoods programmers believe about names" >"People have names"

Is this a joke?

~~~
Verdex_2
Newborn baby, unidentified deceased person, person in police custody who
refuse to give name, feral children.

------
Cyphase
I assume OP didn't mean to link to the #postal-addresses anchor?

~~~
oxguy3
Yeah, could a moderator please remove that?

~~~
sctb
Done.

------
koolba
Under " _Falsehoods Programmers Believe About "Women In Tech"_":

> We're only in tech to find a husband, boyfriend or generally to get laid.

If you flip the genders around I'm pretty sure that would be true for quite a
few men (at least the last part).

~~~
nostoc
You think men go in tech to get laid?

~~~
koolba
Of course. You don't?

Maybe not directly (i.e. literal rock star) but as a means to an end sure.

~~~
NullCharacter
You can extend this logic indefinitely. From the Futurama episode I Dated A
Robot:

> All civilization was just an effort to impress the opposite sex.

