Heroku declines all credit cards

Summary A user attempting to add a credit card to Heroku repeatedly encounters “card declined” errors, even after trying multiple cards and creating a new account. This postmortem explains why this happens, what the underlying system behaviors are, and how senior engineers typically resolve such issues. Root Cause The most common underlying causes in cases … Read more

NSTableViewDiffableDataSource bug? table view delegate method not called

Summary NSTableViewDiffableDataSource does not trigger the tableView(_:rowViewForRow:) delegate method when used, unlike traditional data source implementations. This behavior is due to the diffable data source’s internal handling of row views. Root Cause Diffable data source manages row views internally, bypassing the need to call tableView(_:rowViewForRow:). The method is not invoked because the diffable data source … Read more

Android (Studio) + Dragino LA66 USB

Summary Issue: Android app fails to transmit LoRa signals to an Arduino board via Dragino LA66 USB device. Key Symptoms: App recognizes USB device but no data appears on Arduino. Serial communication code (sendComm) does not reliably transmit data. Root Cause: Incorrect serial port configuration and missing flow control for LoRa communication. Root Cause Baud … Read more

Pyinstaller *.exe doesn’t work while *.py works in pycharm (.venv)

Summary The PyInstaller-generated .exe fails to execute correctly, while the .py script runs flawlessly in PyCharm’s virtual environment. The issue stems from incorrect handling of relative paths and resource bundling during the PyInstaller packaging process. Root Cause Relative Path Mismatch: PyInstaller bundles files into a temporary directory (sys._MEIPASS), but the application fails to locate templates … Read more

Migration to Expo SDK 54 and liquid glass header buttons

Summary This postmortem analyzes a regression introduced after migrating to Expo SDK 54 with Liquid Glass where header buttons became misaligned, incorrectly colored, and inconsistently rendered between Expo Go and TestFlight. The issue stemmed from a combination of React Navigation + react-native-screens behavioral changes, deprecated styling APIs, and legacy dependencies overriding new defaults. Root Cause … Read more

Run expensive function (containing for loop) on multiple GPUs. pmap gives out of memory error

Summary Running an expensive function with a for loop on multiple GPUs using pmap results in out-of-memory errors, despite each GPU handling the same workload as in serial execution. The issue arises from JAX’s memory allocation behavior during parallel compilation and execution. Root Cause JAX’s pmap replicates the function across GPUs, leading to redundant memory … Read more

Unsure if I can learn Django

Summary This postmortem analyzes a common early‑career engineering issue: believing you’re “not ready” to learn a framework like Django despite having the required fundamentals. The incident stems from a mismatch between perceived readiness and actual readiness, leading to stalled progress and unnecessary hesitation. Root Cause The root cause is underestimating how much Python knowledge is … Read more

Rocky Linux 9: mod_wsgi logging to stderr fails with complete silence

Summary Rocky Linux 9’s mod_wsgi fails to log to stderr, resulting in silent failures when using Python’s logging module. This issue persists despite wsgi.errors being present in the environment, rendering standard logging methods ineffective. Root Cause mod_wsgi on Rocky Linux 9 does not correctly handle stderr redirection for WSGI applications. The wsgi.errors file descriptor, intended … Read more

D8 fails while dexing gradle-api-8.11.1.jar during Android instrumented tests

Summary This postmortem analyzes a failure where D8 crashes while dexing gradle-api-8.11.1.jar during Android instrumented tests. The issue appears only in connectedDebugAndroidTest and is caused by Gradle’s own internal Multi‑Release JAR leaking onto the androidTest runtime classpath, where D8/Desugar cannot process it correctly. Root Cause The underlying problem is that gradle-api-8.11.1.jar is being added to … Read more