2016-09-08 05:22:55 -04:00
|
|
|
|
# Awesome Falsehood [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
|
|
|
|
|
|
2016-09-08 06:18:23 -04:00
|
|
|
|
A curated list of awesome falsehoods programmers believe in.
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
2016-09-08 20:04:13 -04:00
|
|
|
|
> The logic of the world is prior to all truth and falsehood.
|
|
|
|
|
> - Ludwig Wittgenstein
|
|
|
|
|
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
2016-09-08 19:44:50 -04:00
|
|
|
|
## Contents
|
|
|
|
|
|
2016-09-08 19:51:21 -04:00
|
|
|
|
- [Foreword](#foreword)
|
2016-09-08 19:44:50 -04:00
|
|
|
|
- [Meta](#meta)
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Build Systems](#build-systems)
|
|
|
|
|
- [Dates and Time](#dates-and-time)
|
|
|
|
|
- [E-Commerce](#e-commerce)
|
2016-09-08 19:44:50 -04:00
|
|
|
|
- [Emails](#emails)
|
|
|
|
|
- [Gender](#gender)
|
|
|
|
|
- [Geography](#geography)
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Human Names](#human-names)
|
2016-09-08 19:44:50 -04:00
|
|
|
|
- [Networks](#networks)
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Phone Numbers](#phone-numbers)
|
2016-09-08 19:44:50 -04:00
|
|
|
|
- [Prices](#prices)
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Postal Addresses](#postal-addresses)
|
2016-09-08 19:44:50 -04:00
|
|
|
|
- [Versions](#versions)
|
|
|
|
|
- [Contributing](#contributing)
|
2016-09-12 06:05:57 -04:00
|
|
|
|
- [Good Candidates](#good-candidates)
|
|
|
|
|
- [*Falsehood* Articles](#falsehood-articles)
|
|
|
|
|
- [Libraries](#libraries)
|
|
|
|
|
- [Data Structures](#data-structures)
|
2016-09-08 19:44:50 -04:00
|
|
|
|
- [License](#license)
|
|
|
|
|
|
|
|
|
|
|
2016-09-08 19:11:28 -04:00
|
|
|
|
## Foreword
|
2016-09-08 06:15:51 -04:00
|
|
|
|
|
2016-09-08 19:11:28 -04:00
|
|
|
|
*Falsehood* articles are a form of commentary on a particular subject, and are
|
2016-09-08 19:16:46 -04:00
|
|
|
|
appreciated by the developer community at large for their effectiveness and
|
2016-09-08 19:11:28 -04:00
|
|
|
|
density. They're a convenient written form to approach an unfamiliar domain by
|
|
|
|
|
dispelling myths, point out common pitfalls, show inconsistencies and
|
2016-09-08 19:16:46 -04:00
|
|
|
|
subtleties.
|
2016-09-08 06:15:51 -04:00
|
|
|
|
|
2016-09-08 19:11:28 -04:00
|
|
|
|
They might looks like to some as a suite of wordy unit-tests covering extensive
|
|
|
|
|
edge-cases provided by real-world usage.
|
2016-09-08 18:18:43 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 18:19:40 -04:00
|
|
|
|
## Meta
|
|
|
|
|
|
2016-09-08 19:51:36 -04:00
|
|
|
|
- [Awesome Falsehood](https://github.com/kdeldycke/awesome-falsehood) - A
|
|
|
|
|
curated list of awesome falsehoods programmers believe in.
|
2016-09-08 20:13:24 -04:00
|
|
|
|
- [Falsehoods Programmers
|
|
|
|
|
Believe](http://spaceninja.com/2015/12/08/falsehoods-programmers-believe/) - A
|
|
|
|
|
brief list of common falsehoods. A great overview and quick introduction into
|
|
|
|
|
the world of falsehoods.
|
2016-09-08 18:19:40 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
## Build Systems
|
2016-09-08 18:19:21 -04:00
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About Build
|
|
|
|
|
Systems](http://pozorvlak.livejournal.com/174763.html)
|
2016-09-08 18:19:21 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
## Dates and Time
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About
|
|
|
|
|
Time](http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time) -
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Seminal article on dates and time.
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [More Falsehoods About
|
|
|
|
|
Time](http://infiniteundo.com/post/25509354022/more-falsehoods-programmers-believe-about-time) -
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Part. 2 of the article above.
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About Time and Time
|
|
|
|
|
Zones](http://www.creativedeletion.com/2015/01/28/falsehoods-programmers-date-time-zones.html) -
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Another takes on time-related falsehoods, with an emphasis on time zones.
|
2016-09-12 05:50:34 -04:00
|
|
|
|
- [Falsehoods About
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Time](https://gist.github.com/thanatos/eee17100476a336a711e) - A critique of
|
|
|
|
|
the first article with a very detailed explanation of each falsehood, adding
|
|
|
|
|
more context and external resource to the subject.
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
## E-Commerce
|
2016-09-08 19:13:57 -04:00
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About Online
|
|
|
|
|
Shopping](http://wiesmann.codiferes.net/wordpress/?p=22201)
|
2016-09-08 19:13:57 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 05:58:21 -04:00
|
|
|
|
## Emails
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [I Knew How to Validate an Email Address Until I Read the
|
2016-09-08 20:13:24 -04:00
|
|
|
|
RFC](http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/).
|
2016-09-08 05:58:21 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 18:17:17 -04:00
|
|
|
|
## Gender
|
|
|
|
|
|
2016-09-12 05:50:34 -04:00
|
|
|
|
- [Falsehoods About
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Gender](https://gist.github.com/garbados/f82604ea639e0e47bf44)
|
2016-09-08 18:17:17 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 06:13:07 -04:00
|
|
|
|
## Geography
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehood About
|
|
|
|
|
Geography](http://wiesmann.codiferes.net/wordpress/?p=15187).
|
2016-09-08 06:13:07 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
## Human Names
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
2016-09-12 05:50:34 -04:00
|
|
|
|
- [Falsehoods About
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Names](https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/).
|
|
|
|
|
- [XKCD #327: Exploits of a
|
|
|
|
|
Mom](https://xkcd.com/327/).
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [HL7 v3
|
2016-09-08 20:13:24 -04:00
|
|
|
|
RIM](http://www.hl7.org/implement/standards/product_brief.cfm?product_id=186) -
|
|
|
|
|
A flexible data model for representing human names.
|
|
|
|
|
- [iOS
|
2016-09-12 05:56:49 -04:00
|
|
|
|
`NSPersonNameComponentsFormatter`](https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/NSPersonNameComponentsFormatter_Class/index.html) -
|
2016-09-08 20:13:24 -04:00
|
|
|
|
Localized representations of the components of a person’s name.
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 18:16:51 -04:00
|
|
|
|
## Networks
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About
|
|
|
|
|
Networks](http://blog.erratasec.com/2012/06/falsehoods-programmers-believe-about.html)
|
2016-09-08 18:16:51 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
## Phone Numbers
|
2016-09-08 06:22:33 -04:00
|
|
|
|
|
2016-09-08 20:13:24 -04:00
|
|
|
|
- [`libphonenumber`](https://github.com/googlei18n/libphonenumber) - Google's
|
|
|
|
|
common Java, C++ and JavaScript library for parsing, formatting, and validating
|
|
|
|
|
international phone numbers. Also available for
|
|
|
|
|
[C#](https://github.com/erezak/libphonenumber-csharp),
|
|
|
|
|
[Objective-C](https://github.com/iziz/libPhoneNumber-iOS),
|
|
|
|
|
[Python](https://github.com/daviddrysdale/python-phonenumbers),
|
|
|
|
|
[Ruby](https://github.com/sstephenson/global_phone) and
|
|
|
|
|
[PHP](https://github.com/giggsey/libphonenumber-for-php).
|
2016-09-08 06:22:33 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 06:14:45 -04:00
|
|
|
|
## Prices
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About
|
|
|
|
|
Prices](https://gist.github.com/rgs/6509585).
|
2016-09-08 06:14:45 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
## Postal Addresses
|
2016-09-08 05:22:55 -04:00
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About
|
|
|
|
|
Addresses](https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/).
|
2016-09-08 20:13:24 -04:00
|
|
|
|
- [`libaddressinput`](https://github.com/googlei18n/libaddressinput) - Google's
|
|
|
|
|
common C++ and Java library for parsing, formatting, and validating
|
|
|
|
|
international postal addresses.
|
|
|
|
|
- [`addressing`](https://github.com/commerceguys/addressing) - A PHP 5.4+
|
|
|
|
|
addressing library, powered by Google's dataset.
|
|
|
|
|
- [`postal-address`](https://github.com/scaleway/postal-address) - Python
|
|
|
|
|
module to parse, normalize and render postal addresses.
|
2016-09-08 05:33:09 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 18:18:02 -04:00
|
|
|
|
## Versions
|
|
|
|
|
|
2016-09-12 05:56:49 -04:00
|
|
|
|
- [Falsehoods About
|
|
|
|
|
Versions](https://github.com/xenoterracide/falsehoods/blob/master/versions.md)
|
2016-09-08 18:18:02 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-08 19:35:58 -04:00
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
|
|
Your contributions are always welcome! Please take a look at the [contribution
|
|
|
|
|
guidelines](CONTRIBUTING.md) first.
|
|
|
|
|
|
|
|
|
|
|
2016-09-12 06:05:57 -04:00
|
|
|
|
## Good Candidates
|
|
|
|
|
|
|
|
|
|
Here is a non-restrictive list of items which are good candidates for inclusion
|
|
|
|
|
in this awesome list.
|
|
|
|
|
|
|
|
|
|
### *Falsehood* Articles
|
|
|
|
|
|
|
|
|
|
Articles following the *falsehood* scheme are prime candidates for inclusion in
|
|
|
|
|
this awesome list.
|
|
|
|
|
|
|
|
|
|
These articles starts with the hypothesis that developers have a naive, simple
|
|
|
|
|
view of the subject at hand. Then proceed to list a set of candid assumptions
|
|
|
|
|
that might be held by such programmers. Each one is intentionally false, and
|
|
|
|
|
sometimes illustrated by a counter-example.
|
|
|
|
|
|
|
|
|
|
A list of falsehood is crafted as a progression that is designed to refine
|
|
|
|
|
concepts. Having read the whole list of falsehood, the reader should possess a
|
|
|
|
|
global, if not complete, overview of the domain being targeted by the article,
|
|
|
|
|
including most, if not all, its pitfalls, edges-cases and inconsistencies.
|
|
|
|
|
|
|
|
|
|
In the worst case, these articles might provoke an emotional reaction and cause
|
|
|
|
|
flipping table. `(╯°□°)╯︵ ┻━┻`
|
|
|
|
|
|
|
|
|
|
### Libraries
|
|
|
|
|
|
|
|
|
|
When possible, we provide a list of programming libraries or modules that may
|
|
|
|
|
solve, or try to, the complexities and idiosyncrasies pointed by the
|
|
|
|
|
*falsehood* articles above.
|
|
|
|
|
|
|
|
|
|
So we can put back tables in place. `┬─┬ ノ( ゜-゜ノ)`
|
|
|
|
|
|
|
|
|
|
### Data Structures
|
|
|
|
|
|
|
|
|
|
Data models and structures generic enough to cover and addresses most of the
|
|
|
|
|
falsehoods are also welcome in this page.
|
|
|
|
|
|
|
|
|
|
|
2016-09-08 19:16:46 -04:00
|
|
|
|
## License
|
2016-09-08 05:33:09 -04:00
|
|
|
|
|
2016-09-09 13:46:26 -04:00
|
|
|
|
[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)
|
|
|
|
|
|
|
|
|
|
Content of this repository is licensed under the [Creative Commons CC0
|
|
|
|
|
license](https://creativecommons.org/publicdomain/zero/1.0/).
|
|
|
|
|
|
|
|
|
|
To the extent possible under law, [Kevin Deldycke](http://kevin.deldycke.com)
|
|
|
|
|
has waived all copyright and related or neighboring rights to this work.
|