Postgres: Best design pattern for “Exclusive Arc” (Polymorphic) relationships? (Nullable FKs vs. alternatives)

Summary This postmortem examines a common relational‑design failure: implementing Exclusive Arc (a.k.a. Polymorphic) relationships in PostgreSQL using multiple nullable foreign keys. The pattern works at first, but it becomes brittle, hard to extend, and difficult to enforce correctly. Senior engineers eventually replace it with cleaner, constraint‑friendly designs. Root Cause The root cause is the assumption … Read more

Small question: php syntax to close database-connection with prepared statements (and placeholders)

Summary Issue: Misunderstanding of database connection closure in PHP when using prepared statements. The developer was unsure if closing the prepared statement ($stmt->close()) also closes the database connection. Root Cause Confusion between prepared statement and database connection objects: The developer mistakenly assumed that closing the prepared statement ($stmt->close()) would also close the database connection ($mysqli). … Read more

iOS 26 SwiftUI Liquid Glass toolbar animation only plays when switching state rapidly

Summary A SwiftUI toolbar using the new iOS 26 Liquid Glass animation only animates when its content changes rapidly. Under normal state changes—such as switching a segmented picker—the toolbar updates instantly with no morphing/materialize animation. This postmortem explains why this happens, why it’s expected in real systems, and how senior engineers work around it. Root … Read more

why does python ignore variables i import when pygame is running

Summary A variable imported with from cityMap import * appeared in autocomplete but failed at runtime because the module executed before the Pygame environment was ready, and because wildcard imports hide ordering problems. The variable gray was never actually available in the namespace you expected, even though the editor suggested it. Root Cause The failure … Read more

Losing S3 class: Why does POSIXlt behave differently when this happens inside vs. outside of a data.frame?

Summary This incident examines why S3 objects lose their class when assigned into incompatible vectors, and why POSIXlt shows different behavior inside vs. outside a data.frame. The short answer: data.frame assignment uses a different coercion path, and POSIXlt is a deeply unusual S3 class implemented as a list, which triggers R’s internal recycling and coercion … Read more

WebGPU 3D renderer directional shading is not displaying evenly

Summary Uneven directional shading in a WebGPU 3D renderer using Gouraud shading was caused by missing or incorrect vertex normals in the OBJ file loader. This resulted in flat shading across mesh faces instead of smooth interpolation. Root Cause Missing Normals Calculation: The OBJ loader provided zero-initialized normals (normals.push(0.0);) instead of calculating them from face … Read more

A fullscreen WPF window with WindowStyle=”None” prevents the autohide taskbar from opening

Summary A fullscreen WPF window using WindowStyle=”None” can unintentionally block the autohide Windows taskbar, preventing it from appearing when the user moves the mouse to the screen edge. This postmortem explains why this happens, how it impacts real applications, and how senior engineers typically resolve it. Root Cause The issue stems from how WPF interacts … Read more

React Native Skia on RN 0.81+ with New Architecture causes massive build time, huge build size, and poor performance

Summary React Native Skia integration with RN 0.81+ and the New Architecture causes massive build times, huge disk usage, and poor runtime performance. Key issues include: 10–15 minute initial build times Project size bloating from 1–2 GB to 7–8 GB Slow hot reload and rebuild cycles Dependency on New Architecture for Skia rendering Root Cause … Read more

How can I run multiple separate loops independently from one another in Arduino IDE?

Summary Running multiple independent loops in Arduino is challenging due to the blocking nature of delay(). The provided code sequentially executes loops, causing LEDs to flash in sequence rather than concurrently. The root cause is the single-threaded execution model of Arduino, which halts all operations during delay(). Root Cause Blocking delay(): The delay() function pauses … Read more

Full stack dev path

Summary The full-stack development path outlined includes a range of technologies such as HTML, CSS, JavaScript, TypeScript, React.js, Next.js, Tailwind CSS, Node.js, Express.js, MongoDB, Prisma, and Mongoose. This combination provides a solid foundation for building robust and scalable full-stack applications. However, the key to success lies in understanding the interconnectedness of these technologies and focusing … Read more