Courses & TutorialsProgramming
Awesome Falsehood – Massive Collection of Resources
Falsehood articles are a form of commentary on a particular subject, and are appreciated by the developer community at large for their effectiveness and terseness. They’re a convenient written form to approach an unfamiliar domain by dispelling myths, point out common pitfalls, show inconsistencies and subtleties.
In a sense, Falsehood articles are a suite of wordy unit-tests covering extensive edge-cases provided by real-world usage.
- Dates and Time
- Human Identity
- Phone Numbers
- Postal Addresses
- Software Engineering
- Falsehoods Programmers Believe – A brief list of common falsehoods. A great overview and quick introduction into the world of falsehoods.
- Falsehoods about Programming – A humbling and fun list on programming and programmers themselves.
- Falsehoods about Falsehoods Lists – Meta commentary on how these falsehoods shouldn’t be handled.
- Falsehoods about Online Shopping – Covers prices, currencies and inventory.
- Falsehoods about Prices – Covers currencies, amounts and localization.
- Falsehoods about IBANs – International Bank Account Numbers are not international.
- Falsehoods about Economics – Economics are not simple or rational.
- Falsehoods about Cars – Even something as common as defining a car is full of pitfalls.
- Decimal Point Error in Etsy’s Accounting System – The importance of types in accounting software: missing the decimal point ends up with 100x over-charges.
>in company names lead to XSS attacks – Because UK allows companies to be registered with special characters, a hacker leveraged them to register
\"><SCRIPT SRC=MJT.XSS.HT></SCRIPT> LTD, but also
; DROP TABLE "COMPANIES";-- LTD,
BETTS & TWINE LTDand
SAFDASD & SFSAF \' SFDAASF\" LTD.
- CLDR currency definitions – Currency validity date ranges overlap due to revolts, invasions, new constitutions, and slow planned adoption.
tax– A PHP 5.4+ tax management library.
Dates and Time
- Falsehoods about Time – Seminal article on dates and time.
- More Falsehoods about Time – Part. 2 of the article above.
- Falsehoods about Time and Time Zones – Another takes on time-related falsehoods, with an emphasis on time zones.
- Critique of Falsehoods about Time – Takes on the first article above and provides an explanation of each falsehood, with more context and external resources.
- Falsehoods about Unix Time – Mind the leap second!
- Falsehoods about Time Zones – Has some nice points regarding the edge-cases of DST transitions.
- Your Calendrical Fallacy Is Thinking… – List covering intercalation and cultural influence, made by a community of iOS and macOS developers.
- Time Zone Database – Code and data that represent the history of local time for many representative locations around the globe.
- The Long, Painful History of Time – Most of the idiosyncrasies in time keeping can find an explanation in history.
- You Advocate a Calendar Reform – Your idea will not work. This article tells you why.
- So You Want to Abolish Time Zones – Abolishing timezones may sound like a good idea, but there are quite a few complications that make it not quite so.
- The Problem with Time & Timezones – A video about why you should never, ever deal with timezones if you can help it.
- $26,000 Overcollection by Labor Department – The consequence of wrong calendar accounting.
yyyy, and why your year may be wrong – String formatting of date is hard.
- UTC is Enough for everyone, right? – There are edge cases about dates and time (specifically UTC) that you probably haven’t thought of.
- Storing UTC is not a silver bullet – “Just store dates in UTC” is not always the right approach.
- Why is subtracting these two times (in 1927) giving a strange result? – Infamous Stack Overflow answer about both complicated historical timezones, and how historical dates can be re-interpreted by newer versions of software.
- Critical and Significant Dates – From Y2K to the overflow of 32-bit seconds from unix epoch, a list of special date to watch for depending on the system.
- Falsehoods CS Students (Still) Believe Upon Graduating – A list of things (not only) computer science students tend to erroneously and at times surprisingly believe even though they (probably) should know better.
- Postdoc myths –
Lots of things are said, written and believed about postdoctoral researchers that are simply not true..
- I Knew How to Validate an Email Address Until I Read the RFC – Provides intricate examples that are unsuspected valid email addresses according the RFC-822.
- So you think you can validate email addresses (FOSDEM 2018) – Presentation of edge-case email addresses and why you should not use regex to parse them.
- Falsehoods about Geography – Takes on places, their names and locations.
- Falsehoods about Maps – Covers coordinates, projection and GIS.
- I Hate Coordinate Systems – A guide for geospatial practitionners oin diagnosing and fixing common issues with coordinate systems.
- Top 5 most insane kanji place names in Japan – “There’s one special group of kanji that’s hard even for Japanese people to read: place names.”
- Falsehoods about Names – The article that started it all.
- Falsehoods about Names – With Examples – A revisited version of the article above, this time with detailed explanations.
- Falsehoods about Biometrics – Fingerprints are not unique.
- Falsehoods about Families – You can’t really define a family with strict rules.
- Falsehoods about Gender: #1 & #2 – Gender is part of human identity and has its own subtleties.
- Falsehoods about Me – Issues at the intersection of names and gender and internationalization.
- Gay Marriage: The Database Engineering Perspective – How to store a marriage in a database while addressing most of the falsehoods about gender, naming and relationships.
- Personal Names Around the World – How do people’s names differ around the world, and what are the implications for the Web?
- XKCD #327: Exploits of a Mom – Funny take on how implementation of a falsehood might lead to security holes.
- Hello, I’m Mr. Null. My Name Makes Me Invisible to Computers – Real-life example on how implemented falsehood has negative impact on someone’s life.
- My name causes an issue with any booking! – Old airline reservation systems considers the
Misterand drops it.
- HL7 v3 RIM – A flexible data model for representing human names.
- Apple iOS
NSPersonNameComponentsFormatter– Localized representations of the components of a person’s name.
On character encoding, string formatting, unicode and internationalization.
- Falsehoods about Language – Translating a software from English is not as straightforward as it seems to be.
- Internationalis(z)ing Code – A video about things you need to keep in mind when internationalizing your code.
- Minimum to Know About Unicode and Character Sets – A good introduction to unicode, its historical context and origins, followed by an overview of its inner working.
- Awesome Unicode – A curated list of delightful Unicode tidbits, packages and resources.
- Dark corners of Unicode – Unicode is extensive, here be dragons.
- Let’s Stop Ascribing Meaning to Code Points – Dives deeper in Unicode and dispels myths about code points.
- Breaking Our
Latin-1Assumptions – Most programmers spend so much time with
Latin-1they forgets about other’s scripts quirks.
- Ode to a shipping label – Character encoding is hard, more so when each broken layer of data input adds its own spice.
- i18n Testing Data – Compilation of real-word international and diverse name data for unit testing and QA.
- Big List of Naughty Strings – A huge corpus of strings which have a high probability of causing issues when used as user-input data. A must have set of practical edge-cases to test your software against.
- Falsehoods about Job Applicants – Assumptions about job applicants and their job histories aren’t necessarily true.
- Falsehoods about Video – Cover it all: video decoding and playback, files, image scaling, color spaces and conversion, displays and subtitles.
- Falsehoods about Networks – Covers TCP, DHCP, DNS, VLANs and IPv4/v6.
- Fallacies of Distributed Computing – Assumptions that programmers new to distributed applications invariably make.
- There’s more than one way to write an IP address – Some parts of the address are optional, mind the decimal and octal notations, and don’t forget IPv6 either.
hostname-validate– An attempt to validate hostnames in Python.
- Falsehoods about Phone Numbers – Covers phone numbers, their representation and meaning.
- Falsehoods about Addresses – Covers streets, postal codes, buildings, cities and countries.
- Falsehoods about Residence – It’s not only about the address itself, but the relationship between a person and its residence.
- Letter Delivered Despite No Name, No Address – Ultimate falsehood about postal addresses: you do not need one.
- The Bear with Its Own ZIP Code – Smokey Bear has his own ZIP Code (
20252) because he gets so much mail.
- Regex and Postal Addresses – Why regular expressions and street addresses do not mix.
- Parsing the Infamous Japanese Postal CSV – “I saw many horrors, but I’ve never seen this particular formatting choice anywhere else.”
libaddressinput– Google’s common C++ and Java library for parsing, formatting, and validating international postal addresses.
addressing– A PHP 5.4+ addressing library, powered by Google’s dataset.
postal-address– Python module to parse, normalize and render postal addresses.
address– Go library to validate and format addresses using Google’s dataset.
- Falsehoods about Systems of Measurement – On working with systems of measurement and converting between them.
- Falsehoods about Political Appointments – Designing election systems has its own tricks.
- Falsehoods about Women In Tech – Myth about women in STEM (Science, Technology, Engineering, Math) industries.
- Falsehoods about Versions – Attributing an identity to a software release might be harder than thought.
- Falsehoods about Build Systems – Building software is hard. Building software that builds software is harder.
- Falsehoods about REST APIs – Pitfalls to be mindful of when creating and documenting APIs.
- Falsehoods about CSVs – While RFC4180 to exists, it is far from definitive and goes largely ignored.
- Falsehoods about Package Managers – Covers package and their managers.
- Falsehoods about Testing – An attempt to establish a list of falsehoods about testing.
- Falsehoods about Search – Why search (including analysis, tokenization, highlighting) is deceptively complex.
- Falsehoods about Bitcoin – A list of mistaken perspectives on Bitcoin.
- Falsehoods about Pagination – Why your pagination algorithm is giving someone (possibly you) a headache.
- Myths about File Paths – Diversity of file-systems and OSes makes file paths a little harder than we might think of.
- Myths about CPU Caches – Misconceptions about caches often lead to false assertions, especially when it comes to concurrency and race conditions.
- Myths about
/dev/urandom– There are a few things about
/dev/randomthat are repeated again and again. Still they are false.
- Hi! My name is… – This talk could have been named “falsehoods about usernames (and other identifiers)”.
- Popular misconceptions about
mtime– Part of a post on why file’s
mtimecomparison could be considered harmful.
- Rules for Autocomplete – Not falsehoods per-se, but still a great list of good practices to implement autocompletion.
- Floating Point Math – “Your language isn’t broken, it’s doing floating point math. (…) This is why, more often than not,
0.1 + 0.2 != 0.3.”
- The Hidden Complexity of Downloading Favicons, Told in 15+ Edge Cases – Downloading that little icon you see in you browser tabs should be a simple exercise. It turned out to be a lot more complicated than you think. Be vigilant that you are not shaving a Yak.
- Norway is not False – Norway’s ISO country code is also valid YAML for False.
- Falsehoods about Fonts – Assumptions about typography on the web and in desktop applications.
- Truths programmers should know about case – A complete reverse of the falsehoods format, on the topic of case (as in uppercase and lowercase text).