Infrastructure errors, reproduced and fixed
Reproducible fixes for infrastructure errors: WSL2, Synology, Docker Swarm, Graylog, MediaWiki. Every post is a real incident with the exact error message, the diagnosis and the verified fix.
Topics
- Web platform and delivery
5 posts
Cloudflare, DNS and Search Console: email that is accepted and then refused, custom domains that answer 522, bot scoring that rejects headless browsers, and a phishing flag on a site with no login.
- APIs and automation
12 posts
REST APIs that answer with the wrong status code, request shapes that changed between versions, authentication transports that silently differ, and clients that fail before a request leaves the machine.
- Documents and spreadsheets
4 posts
Generating .docx and .xlsx files that survive a real reader: tracked changes, page setup, merged cells, and why converted PDFs are not templates.
- Windows and WSL
3 posts
Filesystem mounts that exist but cannot serve I/O, drive letters WSL2 refuses to read, and where Windows desktop apps actually keep their data.
- Servers and infrastructure
5 posts
Container registries, SSH transports, and version control on machines you do not fully administer - including the errors that are permission problems and the ones that only look like them.
Latest posts
- Search Console says "Possible phishing detected on user login" on a site with no login
A static blog with no accounts, no forms and no password field got flagged for phishing on user login, with no sample URLs. How to prove it is not a blocklisting or a compromise, and the two changes that removed every credential-shaped surface.
- curl exits 3 on a Jenkins API call: square brackets in tree= are not URL-safe
A Jenkins REST query that works pasted into a browser dies in the shell with curl exit code 3 and no request on the wire. Why the tree= filter's brackets are the cause, and how -G --data-urlencode fixes it for good.
- LibreOffice converts a PDF form to .docx and python-docx sees no paragraphs at all
A headless LibreOffice PDF-to-docx conversion produces a file that looks perfect in a word processor but reports zero paragraphs and zero tables to python-docx. Why the import filter gives you shapes, and how rebuilding the form with pdftotext is the cheaper route.
- openpyxl: copy_worksheet drops the page setup and insert_rows leaves merged cells behind
copy_worksheet() silently resets print scaling and insert_rows() leaves merged ranges on their old coordinates. Both look correct in the cell grid and wrong on paper. How I caught them by rendering to PDF, and the code that fixes each.
- The new Teams keeps its local chat cache in WV2Profile_tfw, not Default
Exporting your own Teams chat history without admin help: why the Graph route stops at an Approval required page, why the EBWebView Default profile looks empty, and where the IndexedDB data actually lives.
- openpyxl: the second save() of a workbook with images raises I/O operation on closed file
Editing a spreadsheet that contains a logo, saving it twice from the same Workbook object, and getting ValueError: I/O operation on closed file — plus a truncated output file that no longer opens. Why images are the trigger and why one load per save is the fix.