Open-source tool guides, tested hands-on
Latest guides
-
Docker Compose Override File Not Working? Merge Rules Tested
Tested on Docker Compose v5.5.1: -f stops auto-loading compose.override.yaml, lists merge (don't replace), and !reset/!override actually work.
Fix Docker Compose -
Tampermonkey Auto Click Every 5 Seconds: 6 Cases I Tested
A tested Tampermonkey script that clicks a button every 5 seconds, and why it fails on re-rendered, disabled, reloading and background pages in Chrome 154.
Fix Tampermonkey -
Tampermonkey Script Can't Find the Element? 5 Traps I Tested
Tested on Tampermonkey 5.5.0 and Chrome 154: why querySelector returns null on load, a working waitForElement function, and fixes for SPAs and shadow DOM.
Fix Tampermonkey -
Grafana Variable Regex Broke My Query? 6 Traps I Tested
Tested on Grafana 13.2.2 with Prometheus: stripping the port with a variable regex breaks instance= queries. Named groups, exclude patterns, JS vs RE2 regex.
Fix Grafana -
Grafana Join by Field Drops a Query? 4 Traps I Tested
Tested on Grafana 13.2.2: Join by field silently drops a query whose key column has a different name, and Outer (time series) drops duplicate keys. Fixes.
Fix Grafana -
Grafana Shows the Mean, Not the Last Value? 3 Causes I Tested
Tested on Grafana 13.2.2: new Stat and Gauge panels already default to Last *. A mean usually comes from a migrated singlestat panel. 3 causes and fixes.
Fix Grafana -
Typst Page Numbering: Title Page, Roman Numerals, Page X of Y
Tested on Typst 0.15.1 and 0.14.2: why a footer hides the page number, the body starts at 2, the preface says i of iii, and top numbers ignore a reset.
Fix Typst -
Typst Line Spacing and Paragraph Spacing Not Working
Tested on Typst 0.15.1 and 0.14.2: leading only changes lines in a wrapped paragraph, and spacing skips tight lists and the paragraph after a heading.
Fix Typst -
Typst Table Caption on Top: Continued Pages and Table 2.1
Tested on Typst 0.15.1 and 0.14.2: put table captions on top, repeat "Table 1 (continued)" on later pages, and number tables per chapter without the 0.1 trap.
Fix Typst -
Typst Heading Numbering: Per-Level Formats and the none Trap
Tested on Typst 0.14.2 and 0.15.1: returning none from a heading numbering function leaves a 0.3em gap and breaks @references silently. Here's what works.
Fix Typst -
How to Change a Grafana Legend Name: 4 Ways and the Traps
Tested on Grafana 13.2.3 with Prometheus: {{label}} in Legend, Display name, overrides and Rename by regex. What wins, and why a typo shows the full name.
Fix Grafana -
Grafana Value Mapping Not Working? 9 Rules I Tested
Tested on Grafana 13.2.3: mapping order, inclusive ranges, whole-string regex, missing colors, null vs Last *, and why ${var} and "1.0" never match.
Fix Grafana -
Docker Compose .env Not Loading? 6 Real Causes, Tested
Tested on Docker Compose v5.5.1: .env only feeds interpolation, not the container. --env-file also resolves paths differently than env_file:.
Fix Docker Compose -
Syncthing Conflict Files and .stignore (v2.1.5)
We forced 8 conflict and ignore cases on Syncthing v2.1.5: the ID in a sync-conflict name is the winner's, .stignore never syncs, maxConflicts=0 loses edits.
Fix Syncthing -
Syncthing v1 to v2 Upgrade: What Changes on Disk
Syncthing v1.30.0 to v2.1.5: the SQLite migration runs by itself, the old database is kept, v1 refuses to start afterwards, v1 and v2 devices still sync.
Advanced Syncthing -
Reset a Forgotten Syncthing GUI Password (v2.1.5)
Forgot your Syncthing GUI password? It can't be recovered, but you can reset it in a minute: stop Syncthing, run syncthing generate, restart. Tested v2.1.5.
Fix Syncthing -
Syncthing "Revert Local Changes": What It Deletes
On a Receive Only folder, Revert Local Changes deletes files you added. Versioning off: gone for good. Simple File Versioning on: kept in .stversions.
Fix Syncthing -
Obsidian Bases contains(): 3 Behaviours, Tested
Tested against 15 purpose-built probe notes: contains() ignores case, matches substrings on text, matches whole elements on lists, and throws on numbers.
Fix Obsidian -
Embedding an Obsidian Base: 11 Syntaxes Tested
Eleven ways to embed a base, each in its own note. Two work identically, one fails silently, and the extension you normally omit is mandatory here.
Advanced Obsidian -
Obsidian Bases Filter Syntax, Tested on 38 Views
Every Bases operator and function run against a 1,781-file vault, with the result count independently verified. One display quirk will mislead you.
Advanced Obsidian -
Obsidian Bases: Managing Attachments, Tested
Bases indexes PDFs, images and CSVs as first-class files, with working size and extension properties. It also counts your .base files as attachments.
Workflow Obsidian -
Obsidian Bases: Files Modified in Last 7 Days
The filter is two lines. The problem is that it silently includes your PDFs and images, and the result count tells you almost nothing. Tested on 1,781 files.
Advanced Obsidian -
Obsidian Bases Nested Filters: 6 Levels, Tested
Six levels of and/or/not nesting, each result computed independently before the run. All six matched exactly — and the rule I used to check them was wrong.
Advanced Obsidian -
Bases vs Dataview: Which Should You Use?
A verdict after three hours of testing Bases against known answers: what it gets right, its four traps, and where Dataview is still the correct choice.
Verdict Obsidian -
Dataview to Bases: Translating Your Queries
Each Dataview clause mapped to its Bases equivalent and verified against known answers, plus the three habits that translate cleanly but behave differently.
Advanced Obsidian