惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
I
InfoQ
宝玉的分享
宝玉的分享
G
Google Developers Blog
J
Java Code Geeks
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
腾讯CDC
F
Fortinet All Blogs
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
B
Blog RSS Feed
博客园 - 聂微东
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏

Immich Blog

v3.2.0 | Immich Blog August recap | Immich Blog July recap | Immich Blog Release v3.1.0 | Immich Blog Release v3.0.0 | Immich Blog Migrating to v3 | Immich Blog June recap | Immich Blog FUTO — 2 years later | Immich Blog May recap | Immich Blog April recap | Immich Blog Awesome Immich | Immich Blog Release v2.7.0 | Immich Blog March recap | Immich Blog Release v2.6.0 | Immich Blog February recap | Immich Blog Building the Immich editor | Immich Blog January recap | Immich Blog Release v2.5.0 | Immich Blog 2025 - A year in review | Immich Blog Release v2.4.0 | Immich Blog November recap | Immich Blog Release v2.3.0 | Immich Blog October recap | Immich Blog Release v2.2.0 | Immich Blog Google flags Immich sites as dangerous | Immich Blog Release v2.1.0 | Immich Blog Release v2.0.0 - Stable 🎉 | Immich Blog Release v2.0.0 - Stable 🎉 | Immich Blog New Svelte component library | Immich Blog Sync v2 | Immich Blog
Cursed knowledge | Immich Blog
Jason Rasmus · 2025-09-23 · via Immich Blog
  • Blog
  • Cursed knowledge

September 23, 2025

— Jason Rasmussen

The story behind the Cursed Knowledge page and how we gained the knowledge we have that we wish we didn't.


After working on Immich for a year or two, the team, collectively, had learned a lot of weird stuff. We often found ourselves discussing these oddities, which we internally dubbed "cursed knowledge" — knowledge we had, that we wished we did not have. The range of topics varied from obscure bugs to random, unintuitive library behavior. Eventually, we decided to create a dedicated page to document what we had learned.


View Cursed Knowledge


The first batch of cursed knowledge was added in #10907 and included behavior of JavaScript date objects, bcrypt limitations, weird npm packages, and PostgreSQL NOTIFY behavior. Naturally, this cursed knowledge is heavily connected to the tools and technology we use, which mainly consists of Node.js, JavaScript, TypeScript, & PostgreSQL. However, Immich itself, as a self-hosted photo & video management product, exposes us to complexities with media files, codecs, image processing, authentication, browsers, and varying operating systems, that our users run Immich on. All of this to say, that the team has been exposed to a lot of cursed knowledge over the years while building it.

It is worth clarifying that the purpose of this page is not to complain. We, more than most, understand the complexities of building software, and the challenges that every developer faces. We rely on, and appreciate the work of other developers, especially those that have built the tools that we use today. Instead, the page aims to document knowledge we have, that we wish we did not. We do not want to know how cursed JavaScript date objects are, but, inevitably, we do. Some entries are just quirks, while other are undefined, or even expected behavior. Either way, if it's in the list, we wish we didn't have to know it.

It is also worth mentioning that some of the cursed knowledge is now "legacy". Some of the issues, like the Cloudflare Fetch behavior is less cursed because the setting that enabled this behavior now has a different default, and it is much more difficult to enable it unknowingly.

Inevitably, and somewhat reluctantly, we will likely continue to gain even more cursed knowledge. We will continue to update our page as this happens, so check back periodically for new entries!

Cheers,
The Immich Team