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 07:22:40 -04:00
- [Business ](#business )
2016-09-12 05:56:49 -04:00
- [Dates and Time ](#dates-and-time )
2016-09-08 19:44:50 -04:00
- [Emails ](#emails )
- [Geography ](#geography )
2016-09-12 07:20:12 -04:00
- [Human Identity ](#human-identity )
2016-09-08 19:44:50 -04:00
- [Networks ](#networks )
2016-09-12 05:56:49 -04:00
- [Phone Numbers ](#phone-numbers )
- [Postal Addresses ](#postal-addresses )
2016-09-12 07:26:55 -04:00
- [Software Engineering ](#software-engineering )
2016-09-08 19:44:50 -04:00
- [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-10-06 01:28:47 -04:00
In a sense, *Falsehood* articles are 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 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 07:22:40 -04:00
## Business
- [Falsehoods About Online
Shopping](http://wiesmann.codiferes.net/wordpress/?p=22201) - Covers prices,
currencies and inventory.
- [Falsehoods About
Prices](https://gist.github.com/rgs/6509585) - Covers currencies, amounts and
localization.
- [`tax` ](https://github.com/commerceguys/tax ) - A PHP 5.4+ tax management
library.
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 07:18:08 -04:00
- [Critique of Falsehoods About
Time](https://gist.github.com/thanatos/eee17100476a336a711e) - Takes on the
first article above and provides an explanation of each falsehood,
with more context and external resources .
- [Time Zone Database ](https://www.iana.org/time-zones ) - Code and data that
represent the history of local time for many representative locations around
the globe.
- [The Long, Painful History of Time ](http://naggum.no/lugm-time.html ) - Most
of the idiosyncracies in time keeping can find an explanation in history.
2016-09-08 05:22:55 -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-12 07:15:14 -04:00
RFC](http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/) -
Provides intricates examples that are unsuspected valid emails according the
RFC-822.
2016-09-08 05:58:21 -04:00
2016-09-08 06:13:07 -04:00
## Geography
2016-09-12 05:56:49 -04:00
- [Falsehood About
2016-09-12 07:16:03 -04:00
Geography](http://wiesmann.codiferes.net/wordpress/?p=15187) - Takes on places,
their names and locations.
2016-09-12 07:16:22 -04:00
- [Falsehoods About
Maps](http://www.atlefren.net/post/2014/09/falsehoods-programmers-believe-about-maps/) -
Covers coordinates, projection and GIS.
2016-09-08 06:13:07 -04:00
2016-09-12 07:20:12 -04:00
## Human Identity
2016-09-08 05:22:55 -04:00
2016-09-12 05:50:34 -04:00
- [Falsehoods About
2016-09-12 07:15:14 -04:00
Names](https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) -
The article that started it all.
2016-09-12 07:20:12 -04:00
- [Falsehoods About
Gender](https://gist.github.com/garbados/f82604ea639e0e47bf44) - Gender is part
2016-09-29 06:41:40 -04:00
of human identity and has its own subtleties.
2016-10-18 11:19:54 -04:00
- [Gay Marriage: The Database Engineering Perspective ](https://qntm.org/gay ) - Perspective on gender, naming and relationships, all wrapped up in relational database thinking.
2016-09-08 20:13:24 -04:00
- [XKCD #327: Exploits of a
2016-10-06 11:19:42 -04:00
Mom](https://xkcd.com/327/) - Funny take on how implementation of a falsehood
might lead to security holes.
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.
2016-09-12 07:15:40 -04:00
- [Apple 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
2016-09-12 07:15:14 -04:00
Networks](http://blog.erratasec.com/2012/06/falsehoods-programmers-believe-about.html) -
Covers TCP, DHCP, DNS, VLANs and IPv4/v6.
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-12 07:16:50 -04:00
- [Falsehoods About Phone
Numbers](https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS.md) -
Covers phone numbers, their representation and meaning.
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-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
2016-09-12 07:15:14 -04:00
Addresses](https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/) -
Covers streets, postal codes, buildings, cities and countries.
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-12 07:26:55 -04:00
## Software Engineering
2016-09-08 18:18:02 -04:00
2016-09-12 05:56:49 -04:00
- [Falsehoods About
2016-09-12 07:15:14 -04:00
Versions](https://github.com/xenoterracide/falsehoods/blob/master/versions.md) -
Attributing an identity to a software release might be harder than though.
2016-09-12 07:26:55 -04:00
- [Falsehoods About Build
Systems](http://pozorvlak.livejournal.com/174763.html) - Building software is
hard. Building software that build software is harder.
- [Big List of Naughty
Strings](https://github.com/minimaxir/big-list-of-naughty-strings) - Challenge
your assumptions about strings.
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
2016-09-29 06:45:07 -04:00
Data models and structures generic enough to cover and address most of the
2016-09-12 06:05:57 -04:00
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.