SystemCraft™ Press
Blog
Practical answers to the problems that send people searching — pulled from the same Companion Guides, one topic at a time.
September 15, 2026
Python's 'UnboundLocalError' — It's Not a Missing Variable, It's Scope Decided in Advance
The variable has a value elsewhere in your program — just not in the scope Python already decided this line belongs to. Here's how Python actually assigns scope, and why the fix usually isn't `global`.
Read post →September 12, 2026
'Permission Denied' When Running a Script — It's Not Broken, It's Not Executable Yet
The file is right there. It's not corrupted, and you're not missing a typo. Linux just hasn't been told this file is allowed to run — here's the one-line fix, and why sudo isn't it.
Read post →September 9, 2026
VS Code Is Running the Wrong Python — Here's Why the Terminal and IntelliSense Disagree
Your venv is activated, imports resolve in your editor, but the terminal runs a completely different Python. Once you know why VS Code has two separate ideas of 'your' Python, the fix takes ten seconds.
Read post →September 7, 2026
'Column Must Appear in the GROUP BY Clause' — Why SQL Won't Let You Do That
It isn't a syntax error and it isn't arbitrary. SQL is asking a question it genuinely can't answer on its own — and once you see that, the fix is obvious.
Read post →September 3, 2026
Git Says You're in 'Detached HEAD State' — Here's What That Actually Means
It reads like an error. It isn't one. Git is just telling you exactly where you are — and getting back to a branch takes one command, once you know why.
Read post →August 28, 2026
Why Your JavaScript Loop Logs the Same Value Every Time (And How to Fix It)
It looks like a timing bug in setTimeout. It isn't. It's var's scope rules doing exactly what they're designed to do — and the fix is one keyword, once you know why.
Read post →August 25, 2026
How to Fix VS Code Autocomplete When It Stops Working (Without Reinstalling Extensions)
IntelliSense going quiet mid-project isn't random, and it's almost never a broken installation. It's one of three specific things — here's how to tell which.
Read post →August 19, 2026
How to Fix 'command not found' (Without Reinstalling Everything)
The shell isn't telling you a program doesn't exist — it's telling you it looked in a specific list of places and didn't find it there. Those are different problems with different fixes.
Read post →August 15, 2026
Why 'WHERE x = NULL' Never Works in SQL (And What to Use Instead)
This isn't a bug in your query — it's SQL's three-valued logic doing exactly what it's designed to do. Here's how to actually filter for NULL.
Read post →August 12, 2026
How to Fix 'NoneType' Object Has No Attribute Errors (Without Guessing)
This error isn't Python being difficult — it's telling you exactly which variable turned out to be None. Here's how to actually use that.
Read post →August 10, 2026
How to Fix 'Cannot Read Properties of Undefined' (Without Losing Your Mind)
This error isn't JavaScript breaking on you — it's telling you exactly which variable was empty and which property you tried to read off it. Here's how to actually use that.
Read post →August 3, 2026
How to Read a Python Traceback Without Panicking
A traceback isn't a sign you broke something unrecoverably — it's Python telling you exactly where and why. Here's how to actually read one.
Read post →August 3, 2026
How to Resolve a Git Merge Conflict (Without Panicking)
A merge conflict isn't Git telling you something broke — it's Git asking you to make a decision. Here's exactly how to read one and fix it.
Read post →SystemCraft™ Press Newsletter
Get the free Git & GitHub cheat sheet
Subscribe and we'll send you a free printable Git & GitHub cheat sheet, plus new posts as they go up. No spam, unsubscribe anytime.