Struggling with MSAL v4-Angular 21. User needs to re-login if all browser tabs closed and browser relaunched even after using localStorage for cache

Summary This incident analyzes why an Angular 21 application using MSAL v4 forces users to re‑authenticate after closing all browser tabs and relaunching the browser, even though BrowserCacheLocation.LocalStorage is configured. The behavior surprises many engineers because it looks like a persistence failure, but the real cause is deeper inside MSAL’s token model. Root Cause The … Read more

One signal vs. multiple derived signals for complex api responses?

Summary This incident examines a common architectural dilemma in reactive front‑end systems: should a service expose one large reactive object or many smaller derived signals? The issue surfaced when adding a new form that required raw financial data, forcing a decision between continuing to create more computed slices or consolidating everything into a single source … Read more

`NameError` from `inspect.signature()` or `obj.__annotations__` for types present only in `TYPE_CHECKING` block

Summary The issue arises when using inspect.signature() or obj.__annotations__ to get a function signature as a string, resulting in a NameError. This error occurs because the type TracebackType is only defined within a TYPE_CHECKING block, which is not evaluated at runtime. Root Cause The root cause of this issue is that the TYPE_CHECKING block is … Read more

Pylance reporting errors on libraries with dynamic imports such as Cocoa or Quartz from pyobjc

Summary Pylance, a popular Python language server, incorrectly flags errors on libraries with dynamic imports, such as pyobjc modules like Cocoa and Quartz. This issue arises because Pylance cannot resolve symbols imported dynamically at runtime, leading to false positives in static analysis. Root Cause Pylance relies on static type analysis, which fails to interpret dynamic … Read more

How to Make First Big Project Solo

Summary This postmortem analyzes a common failure mode for early‑career backend developers: building projects that never solve a real problem, leading to weak portfolios and interview rejections. The issue isn’t lack of skill — it’s lack of problem selection, scope definition, and system thinking. This document breaks down why it happens, how it impacts careers, … Read more

SQL Server Express INSERT unique incremented number from SELECT on the same table by several users without creating duplicates

Summary This incident revolves around a classic concurrency pitfall: generating unique incrementing serial numbers in SQL Server without proper transactional guarantees. The system worked fine for a single user, but under multi‑user load it risked producing duplicate serial numbers because the logic relied on SELECT MAX(…) + 1 patterns without isolation or locking. Root Cause … Read more

Prevent “changed” flag when registering a variable in template task

Summary This incident centers on an Ansible templating task that always reports changed: true when using register:—even when the template output is identical. This behavior caused a dependent cleanup role to run unnecessarily, creating noise and operational confusion. Root Cause The root cause is that Ansible marks a templating task as changed whenever a backup … Read more