• 1 Post
  • 18 Comments
Joined 11 months ago
cake
Cake day: August 2nd, 2023

help-circle








  • There’s at least one example you can look at, the Jenkins CI project had code like that (if (name.startsWith("windows 9")) {):

    https://issues.jenkins.io/secure/attachment/18777/PlatformDetail

    Microsoft, for all their faults, do (or at least did) take backwards compatibility very seriously, and the option of “just make devs fix it” would never fly. Here’s a story about how they added special code to Windows 95 to make SimCity’s broken code work on it:

    Windows 95? No problem. Nice new 32 bit API, but it still ran old 16 bit software perfectly. Microsoft obsessed about this, spending a big chunk of change testing every old program they could find with Windows 95. Jon Ross, who wrote the original version of SimCity for Windows 3.x, told me that he accidentally left a bug in SimCity where he read memory that he had just freed. Yep. It worked fine on Windows 3.x, because the memory never went anywhere. Here’s the amazing part: On beta versions of Windows 95, SimCity wasn’t working in testing. Microsoft tracked down the bug and added specific code to Windows 95 that looks for SimCity. If it finds SimCity running, it runs the memory allocator in a special mode that doesn’t free memory right away. That’s the kind of obsession with backward compatibility that made people willing to upgrade to Windows 95.



  • If you’re writing code that generic, why wouldn’t you want str to be passed in? For example, Counter('hello') is perfectly valid and useful. OTOH, average_length('hello') would always be 1 and not be useful. OTOOH, maybe there’s a valid reason for someone to do that. If I’ve got a list of items of various types and want to find the highest average length, I’d want to do max(map(average_length, items)) and not have that blow up just because there’s a string in there that I know will have an average length of 1.

    So this all depends on the specifics of the function you’re writing at the time. If you’re really sure that someone shouldn’t be passing in a str, I’d probably raise a ValueError or a warning, but only if you’re really sure. For the most part, I’d just use appropriate type hints and embrace the phrase “we’re all consenting adults here”.



  • The ideal solution is not a Netflix monopoly, it’s one where content providers must pick a single price, and any streaming service can pay that price and provide access to the content. That way you can pay for only Netflix, but get access to everything. Netflix wouldn’t end up with a monopoly though, because anybody else could offer a better service and people could switch to it and not lose access to anything.

    This is unlikely to happen anytime soon due to the intentional clusterfuck of laws like copyright, but it would solve the problem neatly.