Awesome Falsehood
by kdeldycke · kdeldycke/awesome-falsehood
Falsehoods programmers believe in — curated cautionary tales.
False assumption that might be made in codifying music.
Because UK allows companies to be registered with special characters, a hacker leveraged them to register \"> LTD, but also ; DROP TABLE "COMPANIES";-- LTD, BETTS & TWINE LTD and SAFDASD & SFSAF \' SFDAASF\" LTD.
C🆓 Currency validity date ranges overlap due to revolts, invasions, new constitutions, and slow planned adoption.
The importance of types in accounting software: missing the decimal point ends up with 100x over-charges.
How the rules of the State of Delaware and the IRS does not intersects.
Same error as above at Google Ads, or the danger of separating your pennies from your dollars, where $250 internal coupons turned into $25,000. My advice: get rid of integers and floats for monetary values. Use decimals. Or fallback to strings and parse them, don't validate.
Insane compensation at Meta in the middle of the AI-boom breaks ERPs.
Misconceptions and common pitfalls in contract programming.
The consequence of wrong calendar accounting.
From Y2K to the overflow of 32-bit seconds from Unix epoch, a list of special date to watch for depending on the system.
Takes on the first article above and provides an explanation of each falsehood, with more context and external resources.
Another takes on time-related falsehoods, with an emphasis on time zones.
Has some nice points regarding the edge-cases of DST transitions.
Depends on your priorities between SI seconds, earth rotation sync, leap seconds avoidance.
String formatting of date is hard.
An giant list of formats from the two standards, how they overlaps, and live examples.
Abolishing timezones may sound like a good idea, but there are quite a few complications that make it not quite so.
“Just store dates in UTC” is not always the right approach.
Most of the idiosyncrasies in timekeeping can find an explanation in history.
A video about why you should never, ever deal with timezones if you can help it.
🆓 Code and data that represent the history of local time for many representative locations around the globe.
There are edge cases about dates and time (specifically UTC) that you probably haven't thought of.
Infamous Stack Overflow answer about both complicated historical timezones, and how historical dates can be re-interpreted by newer versions of software.
List covering intercalation and cultural influence, made by a community of iOS and macOS developers.
A list of things (not only) computer science students tend to erroneously and at times surprisingly believe even though they (probably) should know better.
“Lots of things are said, written and believed about postdoctoral researchers that are simply not true.”
A summary of the various, surprising things that are allowed in an email address.
A guide for geospatial practitioners on diagnosing and fixing common issues with coordinate systems.
“There's one special group of kanji that's hard even for Japanese people to read: place names.”
Localized representations of the components of a person's name.
Issues at the intersection of names and gender and internationalization.
A revisited version of the article above, this time with detailed explanations.
How to store a marriage in a database while addressing most of the falsehoods about gender, naming and relationships.
Funny take on how implementation of a falsehood might lead to security holes.
B🆓 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.
Most programmers spend so much time with Latin-1 they forgets about other's scripts quirks.
Translating a software from English is not as straightforward as it seems to be.
Plain text can't cut it, which makes Unicode even more incredible for its ability to just work well.
Practical examples illustrating Unicode normalization, ligatures, surrogate pairs, character widths, and grapheme cluster pitfalls in substring operations.
I🆓 Compilation of real-word international and diverse name data for unit testing and QA.
A video about things you need to keep in mind when internationalizing your code.
Dives deeper in Unicode and dispels myths about code points.
You cannot localize temperature differences as-is.
A good introduction to unicode, its historical context and origins, followed by an overview of its inner working.
Character encoding is hard, more so when each broken layer of data input adds its own spice.
A collection of falsehoods on case, encodings, string length, and more.
Assumptions about job applicants and their job histories aren't necessarily true.
Meta commentary on how these falsehoods shouldn't be handled.
A humbling and fun list on programming and programmers themselves.
A brief list of common falsehoods. A great overview and quick introduction into the world of falsehoods.
Quality insurance guidelines to format music, art, and metadata to increase discoverability.
The industry standard for music metadata, including archiving, sound recording, sales and usage reporting, royalties and license deals.
Cover it all: video decoding and playback, files, image scaling, color spaces and conversion, displays and subtitles.
An open-source project and database that seems to have solved the complexity of music catalog management.
Assumptions that programmers new to distributed applications invariably make.
International characters in domain names mean support of homographs and heterographs.
Some parts of the address are optional, mind the decimal and octal notations, and don't forget IPv6 either.
L🆓 Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers. Also available for C#, Objective-C, Python and PHP.
Covers streets, postal codes, buildings, cities and countries.
It's not only about the address itself, but the relationship between a person and its residence.
Ultimate falsehood about postal addresses: you do not need one.
L🆓 Google's common C++ and Java library for parsing, formatting, and validating international postal addresses.
“I saw many horrors, but I've never seen this particular formatting choice anywhere else.”
Why regular expressions and street addresses do not mix.
Smokey Bear has his own ZIP Code (20252) because he gets so much mail.
Quirks extracted from a list of most residential property sales in England and Wales since 1995.
Describes both standardized address formats and content.
Costa Rican uses an idiosyncratic system of addresses that relies on landmarks, history and quite a bit of guesswork.
On working with systems of measurement and converting between them.
Designing election systems has its own tricks.
Myth about women in STEM (Science, Technology, Engineering, Math) industries.
Building software is hard. Building software that builds software is harder.
While RFC4180 to exists, it is far from definitive and goes largely ignored.
False conceptions about the identifiers that are used to identify and link research outputs (and a lot of other things).
Misconceptions about event driven systems and message passing.
Misconceptions about the predictability and performance of garbage collection.
Null pointers are even more cursed than pointers in general, and provenance already makes pointers quite complicated.
Why your pagination algorithm is giving someone (possibly you) a headache.
Why search (including analysis, tokenization, highlighting) is deceptively complex.
An attempt to establish a list of falsehoods about testing.
Invoking undefined behavior can cause anything to happen, for a much broader definition of "anything" than one might think.
FAttributing an identity to a software release might be harder than thought.
“Your language isn't broken, it's doing floating point math. (…) This is why, more often than not, 0.1 + 0.2 != 0.3.”
This talk could have been named falsehoods about usernames (and other identifiers).
There are a few things about /dev/urandom and /dev/random that are repeated again and again. Still they are false.
Misconceptions about caches often lead to false assertions, especially when it comes to concurrency and race conditions.
Diversity of file-systems and OSes makes file paths a little harder than we might think of.
Part of a post on why file's mtime comparison could be considered harmful.
Not falsehoods per se, but still a great list of good practices to implement autocompletion.
“On any Unix-derived system, a path is an admirably simple thing: if it starts with a /, it's a path. Not so on Windows.”
YAML is full of obscure complexity like accidental numbers and non-string keys.
Airline seat maps are far more complex than just neat rows and columns of seats.
Aviation data are less normalized than you might think.
Old airline reservation systems considers the MR suffix as Mister and drops it.
Having multiple international and national agencies trying to reconcile history, practicality and logistics makes codes follow arcane rules.
FAssumptions about typography on the web and in desktop applications.
A complete reverse of the falsehoods format, on the topic of case (as in uppercase and lowercase text).
All the things you have not considered implementing for your doors in games.
“Web is beautiful. Web is ugly. Web is astonishing. A part of this appeal is HTML, with its historical quirks.”
Pitfalls to be mindful of when creating and documenting APIs.
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.
There's a lot of components in an URL, and all have their own logic.
F
T
F
L
A
A
P