simpaticoder 2 hours ago

I loved this the moment I saw it. After looking at an example commit[1], I love it even more. The cursed knowledge entry is committed alongside the fix needed to address it. My first instinct is that every project should have a similar facility. The log is not just cathartic, but turns each frustrating speedbump into a positive learning experience. By making it public, it becomes both a tool for both commiseration and prevention.

1 - https://github.com/savely-krasovsky/immich/commit/aeb5368602...

treve 4 hours ago

The '50 extra packages' one is wild. The author of those packages has racked up a fuckload of downloads. What a waste of total bandwidth and disk space everywhere. I wonder if it's for clout.

  • bikeshaving 2 hours ago

    The maintainer who this piece of “cursed knowledge” is referencing is a member of TC39, and has fought and died on many hills in many popular JavaScript projects, consistently providing some of the worst takes on JavaScript and software development imaginable. For this specific polyfill controversy, some people alleged a pecuniary motivation, I think maybe related to GitHub sponsors or Tidelift, but I never verified that claim, and given how little these sources pay I’m more inclined to believe he just really believes in backwards compatibility. I dare not speak his name, lest I incur the wrath of various influential JavaScript figures who are friends with him, and possibly keep him around like that guy who was trained wrong as a joke in Kung Pow: Enter the Fist. In 2025, I’ve moderated my opinion of him; he does do important maintenance work, and it’s nice to have someone who seems to be consistently wrong in the community, I guess.

  • Centigonal 3 hours ago

    It's probably a clout thing, or just a weird guy (Hanlon's Razor), but a particularly paranoid interpretation is that this person is setting up for a massive, multi-pronged software supplychain attack.

    • godelski 26 minutes ago

      Those don't have to be mutually exclusive. Often those with clout are targeted for supplychain attacks. Take xz as an example. Doesn't seem unreasonable that a solo dev or small team looks to either sell their projects or transfer them to someone else (often not even with money exchanging hands). Or even how old social media accounts are hacked so that they can appear as legitimate accounts.

      I'm big on Hanlon's Razor too, but that doesn't mean the end result can't be the same.

  • fastball 2 hours ago

    The author is almost certainly ljharb.

    • 0x696C6961 an hour ago

      I'm convinced he's a rage baiting account. No-one can consistently have such bad takes.

  • smitty1e 3 hours ago

    It does raise the idea of managed backward compatibility.

    Especially if you could control at install time just how far back to go, that might be interesting.

    Also an immediately ridiculous graph problem for all but trivial cases.

binary132 3 minutes ago

This would be a fun github repo. Kind of like Awesome X, but Cursed.

qdw 19 minutes ago

One of their line items complains about being unable to bind 65k PostgreSQL placeholders (the linked post calls them "parameters") in a single query. This is a cursed idea to begin with, so I can't fully blame PostgreSQL.

From the linked GitHub issue comments, it looks like they adopted the sensible approach of refactoring their ORM so that it splits the big query into several smaller queries. Anecdotally, I've found 3,000 to 5,000 rows per write query to be a good ratio.

Someone else suggested first loading the data into a temp table and then joining against that, which would have further improved performance, especially if they wrote it as a COPY … FROM. But the idea was scrapped (also sensibly) for requiring too many app code changes.

Overall, this was quite an illuminating tome of cursed knowledge, all good warnings to have. Nicely done!

burnt-resistor an hour ago

- Windows' NTFS Alternate Data Streams (ADS) allows hiding an unlimited number of files in already existing files

- macOS data forks, xattrs, and Spotlight (md) indexing every single removable volume by default adds tons of hidden files and junk to files on said removable volumes. Solution: mdutil -X /Volumes/path/to/vol

- Everything with opt-out telemetry: go, yarn, meilisearch, homebrew, vcpkg, dotnet, Windows, VS Code, Claude Code, macOS, Docker, Splunk, OpenShift, Firefox, Chrome, flutter, and zillions of other corporate abominations

joshdavham 17 minutes ago

This is awesome! Does anyone else wanna share some of the cursed knowledge they've picked up?

For me, MacOS file names are cursed:

1. Filenames in MacOS are case-INsensitive, meaning file.txt and FILE.txt are equivalent

2. Filenames in MacOS, when saved in NFC, may be converted to NFD

thorum 2 hours ago

> npm scripts make a http call to the npm registry each time they run, which means they are a terrible way to execute a health check.

Is this true? I couldn’t find another source discussing it. That would be insane behavior for a package manager.

bigyabai 3 hours ago

> Some phones will silently strip GPS data from images when apps without location permission try to access them.

That's no curse, it's a protection hex!

LeoPanthera 2 hours ago

"Some phones will silently strip GPS data from images when apps without location permission try to access them."

Uh... good?

  • steve_adams_86 2 hours ago

    I'm torn. Maybe a better approach would be a prompt saying "you're giving access to images with embedded location data. Do you want to keep the location data in the images, or strip the location data in this application?"

    I might not want an application to know my current, active location. But it might be useful for it to get location data from images I give it access to.

    I do think if we have to choose between stripping nothing or always stripping if there's no location access, this is the correct and safe solution.

    • Aurornis 44 minutes ago

      > saying "you're giving access to images with embedded location data. Do you want to keep the location data in the images, or strip the location data in this application?"

      This is a good example of a complex setting that makes sense to the 1% of users who understand the nuances of EXIF embedded location data but confuses the 99% of users who use a product.

      It would also become a nightmare to manage settings a per-image basis.

g8oz 3 hours ago

This is awesome. Disappointing to hear about the Cloudflare fetch issue.

worik 3 hours ago

dd/mm/yyyy date formats are cursed....

Perhaps it is mm/dd/yyyy (really?!?) that is cursed....

  • armchairhacker 2 hours ago

    dd/mm/yyyy is most common worldwide (particularly Europe, India, Australia) followed by yyyy/mm/dd (particularly China, Japan, South Korea).

    https://wikipedia.org/wiki/Date_and_time_representation_by_c...

    IMO the best format is yyyy/mm/dd because it’s unambiguous (EDIT: almost) everywhere.

    • fastball 2 hours ago

      Not only is YYYY/MM/DD unambiguous, but it also sorts correctly by date when you perform a naive alphabetical sort.

      • LoganDark 8 minutes ago

        I believe YYYY-MM-DD is even less ambiguous than YYYY/MM/DD.

    • accrual 2 hours ago

      I like CCYY-MM-DD because it's also a valid file name on most systems, and using "CCYY" (century + year) instead of "YYYY" feels fancy.

  • hollerith 3 hours ago

    mm.dd.yyyy is cursed, too. The not-cursed options are dd.mm.yyyy and mm/dd/yyyy

    • dmd 2 hours ago

      in what world could mm/dd/yyyy not be cursed!? that makes no sense whatsoever.

      • Izkata 2 hours ago

        It's the US short form, matching the word-month order we always use for regular dates: "August 7, 2025".

        Note the slashes are important, we don't use dots or dashes with this order. That's what GP was getting at.

        • dmd 2 hours ago

          And it makes absolutely no sense. I've lived with it all my life (I'm an American!) and it has never made any sense to me.

          • kstrauser an hour ago

            First, I use ISO8601 for everything. This is not me arguing against it.

            But, I think the American-style formatting is logical for everyday use. When you're discussing a date, and you're not a historian, the most common reason is that you're making plans with someone else or talking about an upcoming event. That means most dates you discuss on a daily basis will be in the next 12 months. So starting with the month says approximately when in the next year you're talking about, giving the day next says when in that month, and then tacking on the year confirms the common case that you mean the next occurrence of it.

            When's Thanksgiving? November (what part of the year?) 27 (toward the end of that November), 2025 (this year).

            It's like answering how many minutes are in a day: 1 thousand, 4 hundred, and 40. You could say 40, 400, and 1000, which is still correct, but everyone's going to look at you weirdly. Answer "2025 (yeah, obviously), the 27th (of this month?) of November (why didn't you start with that?)" is also correct, but it sounds odd.

            So 11/27/2025 starts with the most useful information and works its way to the least, for the most common ways people discuss dates with others. I get it. It makes since.

            But I'll still use ISO8601.