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

推荐订阅源

V
V2EX
Y
Y Combinator Blog
博客园_首页
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
B
Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
WordPress大学
WordPress大学
L
LangChain Blog
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Help Net Security

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