Solid objects turn out to be mostly made of empty space and whirling particles, but we act as though they're solid, because we rarely have to interact with them in such a granular way that involves their underlying complexity.
In the same way, solid iron-clad concepts turn out to be riddled with exceptions that we generally ignore because they're easy to deal with on a case-by-case basis. But when a programmer has to create a system that everyone can use, suddenly these "edge cases" grow to devour the project.
For example: human names are (really) weird. Building a system that can accept all the names people have is really hard. There's actually a giant list of human concepts that are hard to capture in software design.
A worthy addition to that list: Dave Delong's Calendrical Fallacies, AKA lies programmers believe about dates.
An hour will never occur twice in a single day
False. On days when we “leap back” for the Daylight Saving Time shift, one hour occurs twice. For example, in the United States, the hour that occurs twice is the 1 AM hour. This means that on these “fall back” days, correctly-implemented clocks will go from 1:58 … 1:59 … 1:00 … 1:01 … … 1:59 … 2:00 … 2:01 …
This leads to some interesting questions: If a user has set an alarm to wake up at 1 AM on that day, what happens? Does the alarm go off the hour after the midnight hour? Or does it go off during the hour before 2 AM? Or does it go off twice? Or do you just give up and not make the alarm go off at all and make your users miss their dead-of-night appointment?
Every day has a midnight
False. Brazil performs its DST “leap forward” transition at midnight, which means that 11:59 PM is followed by 1:00 AM.
So if you’re writing code and are trying to use the time 00:00:00 to represent “no time”, you will be wrong in Brazil, and Lebanon in 2017.
Your Calendrical Fallacy Is... [Dave Delong]
(via Four Short Links)
Geneva ("Genetic Evasion") is a project from the University of Maryland's Breakerspace ("a lab dedicated to scaling-up undergraduate research in computer and network security"); in a paper presented today at the ACM's Conference on Computer and Communications Security, a trio of Maryland researchers and a UC Berkeley colleague present their work on evolutionary algorithms as […]
Daniel Moghimi, Berk Sunar, Thomas Eisenbarth and Nadia Heninger have published TPM-FAIL: TPM meets Timing and Lattice Attacks, their Usenix security paper, which reveals a pair of timing attacks against trusted computing chips ("Trusted Computing Modules" or TPMs), the widely deployed cryptographic co-processors used for a variety of mission-critical secure computing tasks, from verifying software […]
One of the most interesting things about programming is that it forces you to decompose seemingly simple ideas into a set of orderly steps, and when you do that, you often realize that the "simplicity" of things you deal with all day, every day, is purely illusory and that these are actually incredibly complex, nuanced, […]
If you’re doing any kind of data work, chances are you’re working in Excel. This venerable platform has evolved beyond its roots as a workhorse spreadsheet creator into an essential tool for data analysts and other high-level number crunchers. Want to brush up on this year’s version of the software? There’s no quicker way than […]
Does your computer gear need an upgrade? Don’t cross your fingers and wait for Christmas. You can get 15% off the final sale price of all these essential accessories now by using the online code BFSAVE15, including gaming mice and computer desks. Wireless Charging Mouse Pad Talk about a space saver. This high-quality mouse pad […]
WordPress is a fantastic tool for building web pages – if you know how to use it. Even with all the accessibility, a lot of the deeper features of WordPress are lost in translation to the average user. Enter WP Page Builder, a tool that not only makes WordPress site design easy but also more […]