Cursed Knowledge
Table of Contents
This list is inspired by the Immich team and will be updated over time. Items were accurate when written, but may become outdated.
Python Pre-allocated Integers
The CPython interpreter pre-allocates integer objects in the range -5 to 256.
This can result in surprising behavior when (mis)using the is operator:
Sun Grid Engine Qmon Missing Fonts (February 2019)
Sometimes, out of the box, Sun Grid Engine’s Qmon utility is lacking some fonts to actually launch. Install them with:
Then, you need to configure Qmon to use these fixed fonts. Copy the config file into the user’s home directory:
1cp $SGE_ROOT/qmon/Qmon $HOME
Now, edit the file replacing these lines:
1 _FontLists_.*.interface: \
2 -adobe-helvetica-medium-r-*--14-*-*-*-p-*-*-*=R,\
3 -adobe-helvetica-bold-r-*--14-*-*-*-p-*-*-*=B,\
4 -adobe-helvetica-medium-r-*--20-*-*-*-p-*-*-*=BIG,\
5 -adobe-helvetica-medium-r-*--12-*-*-*-p-*-*-*=SMALL,\
6 -adobe-helvetica-medium-r-*--24-*-*-*-p-*-*-*=HUGE,\
7 -adobe-courier-medium-r-*--14-*-*-*-m-*-*-*=LIST,\
8 -adobe-courier-bold-r-*--14-*-*-*-m-*-*-*=LISTBOLD,\
9 -adobe-courier-medium-r-*--12-*-*-*-m-*-*-*=LISTSMALL,\
10 -adobe-helvetica-medium-r-*--10-*-*-*-p-*-*-*=QUEUEICON
11
12 _FontLists_.*.dialog_font: -adobe-courier-medium-r-*--14-*-*-*-m-*-*-*
13 _FontLists_.*.matrix_font: -adobe-helvetica-medium-r-*--14-*-*-*-p-*-*-*
14 _FontLists_.*.browser_font: -adobe-courier-medium-r-*--12-*-*-*-m-*-*-*
15 _FontLists_.*.fixed_font: -adobe-courier-medium-r-*--14-*-*-*-m-*-*-*
with
1 _FontLists_.*.interface: \
2 fixed=R,\
3 fixed=B,\
4 fixed=BIG,\
5 fixed=SMALL,\
6 fixed=HUGE,\
7 fixed=LIST,\
8 fixed=LISTBOLD,\
9 fixed=LISTSMALL,\
10 fixed=QUEUEICON
11
12 _FontLists_.*.dialog_font: fixed
13 _FontLists_.*.matrix_font: fixed
14 _FontLists_.*.browser_font: fixed
15 _FontLists_.*.fixed_font: fixed
Ephemeral Network Ports (2021)
When connecting to a remote server, a dynamic port number may be used. This can make things challenging when your IT department wants to know what ports to open in the firewall. The range of port numbers potentially used will vary by operating system.
Command Professional Edition Missing DLL (Early 2022)
Source: Hours of my life wasted
Command Professional Edition is missing a DLL file in the installer that prevents the command line version from running. Downloading the missing DLL from NuGet and placing it in the correct directory will fix the issue.
Command Professional Edition Progress Bar (Early 2022)
Source: Even more hours of my life wasted
The command line version of
Command Professional Edition
will crash immediately if it is run in a context where there is no terminal width
(for example, from a Python subprocess call). This is because it tries to draw
a progress bar and wants to know terminal width to draw it. A terminal window
must be spawned for every execution.
Authentik/Qt Port Number (March 2024)
The Qt network library may include the port number in the hostname
(for example, https://blog.nathanv.me:443).
Authentik will treat this as a completely different host.
Hiding Tkinter Combobox Popdown (August 2025)
This is less “cursed knowledge” and more “horrible hack”, but to my knowledge there is no way to prevent a Tkinter combobox from showing it’s popdown widget when clicked. In the event you want to draw your own custom widget, you can immediately destroy the popdown widget after it is shown:
1import tkinter as tk
2from tkinter import ttk
3
4combobox = ttk.Combobox(root, values=["Option 1", "Option 2"])
5
6def on_click(event: tk.Event) -> None:
7 popdown = combobox.tk.call("ttk::combobox::PopdownWindow", str(combobox))
8 combobox.tk.call("destroy", f"{popdown}.f")
9
10combobox.bind("<Button-1>", on_click)
Authentik Verified Email (November 2025)
Authentik version 2025.10 now defaults email_verified to False for OIDC providers.
Some applications require email_verified to be set to True to allow login.
In particular, the
Kubernetes API server
is one of these applications.
This means any upstream applications like Headlamp that
use the Kubernetes API server will also stop working with little indication.
To fix this, in Authentik, go to Customization -> Property Mappings. Create a new “Scope Mapping”. Set the scope name to “email” and the Expression as:
In your OIDC providers, add the new scope to the provider scopes under “Advanced protocol settings”.
xlrd Error Codes (November 2025)
With the xlrd Python library
used to read old .xls files, cells that contain an error
will silently return the internal error code rather than a string
such as "#N/A", like openpyxl does.
This is a pretty major footgun if your code is expecting the cell to contain a number as an actual value versus an error code are indistinguishable.
A way to handle this is as follows:
1from xrld.biffh import XL_CELL_ERROR, error_text_from_code
2
3...
4
5cell = sheet.cell(rowx=row, colx=col)
6value = cell.value
7
8# check if the cell contains an error
9if cell.ctype == XL_CELL_ERROR:
10 # if so, convert the error code into the equivalent error text
11 # https://github.com/python-excel/xlrd/blob/3a19d22014d7b3f3041b7188d21a653c18c709bf/xlrd/biffh.py#L90-L100
12 value = error_text_from_code[value]