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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
雷峰网
雷峰网
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
有赞技术团队
有赞技术团队
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
B
Blog
Recent Announcements
Recent Announcements
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
I
InfoQ
云风的 BLOG
云风的 BLOG
量子位
D
Docker
D
DataBreaches.Net
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
宝玉的分享
宝玉的分享
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Y
Y Combinator Blog
美团技术团队
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
B
Blog RSS Feed
MyScale Blog
MyScale Blog
月光博客
月光博客
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
M
MIT News - Artificial intelligence
U
Unit 42
Google DeepMind News
Google DeepMind News

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 New API documentation | Immich Blog Immich launches merch | Immich Blog 2024 - A year in review | Immich Blog Immich introduces product keys | Immich Blog Immich joins FUTO | Immich Blog 2023 - A year in review | 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