Matt Taylor writes technical posts on software and hardware topics, including addresses, PNG files, digital verniers, and path-finding algorithms.
HN commenters most often cite his "Falsehoods programmers believe about addresses" as a favorite article, and recommend his contraction hierarchies post.
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/trunk/output/falsehoods.html
[2] https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/
Falsehoods programmers believe about visitors to national parks:
1. everyone has a phone that has a camera
2. everyone has a phone that has internet access
3. everyone's internet access works at all times
4. everyone's phone has charge at all times
... etc
Sorry that was a bit mean but I couldn't help it :) If you're not familiar with the format, there's a number of "falsehoods programmers believe about X" articles, for example:
- https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
- https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/
For what it's worth I don't think it's a huge ask to request visitors to carry their rubbish away with them when they visit somewhere like this. If you managed to bring it out there you can surely take it back.
If you find this interesting, definitely consider checking out contraction hierarchies. One of the early algorithms used by mapping software to enable calculating fastest routes between any pair of places. It's exact, and it's orders of magnitude faster than graph search algorithms like Dijkstra.
This webpage has a very intuitive graphical explanation of how it works: https://www.mjt.me.uk/posts/contraction-hierarchies/
(I had the joy of implementing this in Python with OSM data a few years ago. Planning a three hour car trip with software I wrote and having it come back with the same path recommended by Google Maps in a matter of milliseconds was a very rewarding feeling.)
For Databases, it takes me a concious effort to not go to at least 3rd NF.
Except for addresses/names/telephone numbers, I have been burned by ANY assumption I made. Those, I tend to just store as something like char(255) nowadays by default, unless business requirements force me to split it up, but even then, after voicing my concerns.
Edit: reading up on the addresses falsehoods again, 255 may not be enough.
https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
https://github.com/google/libphonenumber/blob/master/FALSEHOODS.md
https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/
>> An example of another comment is 一円. Normally this would mean "one yen", but it also means "the area surrounding", and is a note in the CSV that should be removed from neighborhood names, except for exactly one neighborhood in Shiga where that's actually the name (〒522-0317).
Reminds me of the town called Street.
https://www.google.co.uk/maps?q=Street,+Somerset
There's more great examples of Japanese addressing quirks in Falsehoods Programmers Believe About Addresses.
https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/
Was hoping this would be a collection of resources like
- Falsehoods Programmers Believe About Names[0]
- Falsehoods programmers believe about addresses[1]
- Falsehoods programmers believe about time [2]
etc.
Was a bit disappointed to realize it is more standard foundational papers on various CS topics.
0. https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
1. https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/
2. https://gist.github.com/timvisee/fcda9bbdff88d45cc9061606b4b923ca