tooling
Technical notes on web development, DevOps, and AI integration.
64 articles
- 10:36devops
The Watchdog Still Checked a Container Path That Was Gone
Migrating the Hermes watchdog to host-native was not just swapping paths. Lessons in git diff --quiet, set -euo pipefail, and a zero-token pattern.
TL;DR: Migrating Hermes to host-native broke hermes-patch-watchdog.sh, which still pointed at the old container path. The fix required more than a find-and-replace: git semantics shifted, the venv moved, and set -euo pipefail turned silent mid-script failures into false healthy signals. Every check now fails loudly, since for a silence-means-healthy watchdog, noise beats quiet mistrust.
#hermes#devops#cron - 11:37tooling
DeepSeek Login Died Between Sessions. Three Scripts Fixed It.
Re-logging into DeepSeek via VNC every week got old. I transferred the whole session into Camofox instead: cookies, token, keepalive.
TL;DR: DeepSeek sessions in Camofox died because logging in means two layers: HttpOnly cookies and a localStorage userToken for Bearer API calls. Importing cookies alone patched half the state, so the login page persisted. Three scripts merge cookies into Playwright's storage-state.json, inject the wrapped token, and poll every five minutes to confirm the session.
#automation#playwright#deepseek - 08:14ai
One AGENTS.md Is Not Enough: My Three-Layer Agent Memory
A repo with many coding agents needs more than one instruction file: AGENTS.md for procedures, user memory for preferences, a fact store for on-demand facts.
TL;DR: Repeated agent mistakes in a repo pointed to missing documentation, not a bad agent. The fix is a three-layer setup: AGENTS.md for repo procedures, user memory for personal preferences, and a fact store for reference material. Claude Code reads the same rules through a CLAUDE.md that imports AGENTS.md, keeping every session consistent.
#ai-agents#prompt#automation - 00:40ai
Skills, Memory, Pipelines: AI Agent Terms That Won't Rot
A plain-language glossary of AI agent terms from primary sources: agent vs workflow, skills, three kinds of memory, RAG, and pipelines.
TL;DR: Agents decide their own next steps while workflows run on fixed code paths, and the distinction comes down to who holds the steering wheel. Skills are procedural SOP files loaded only when needed, unlike memory, which carries procedural, semantic, or episodic information across sessions. Pipelines add triggers, gates, and watchdogs to make autonomous agents trustworthy.
#ai-agents#llm#automation - 22:52tooling
Green Selftest, Then an ImportError Caused by a File Name
A CLI tool named keyword.py passed its own selftest yet broke import collections. sys.path order and a transitive import turned out to be the trap.
TL;DR: Naming a local file keyword.py shadows Python's stdlib keyword module because the script directory sits first in sys.path. The trap stays hidden until collections transitively imports keyword and crashes with a confusing ImportError. Fix: avoid stdlib names, run a quick import check, and use Python 3.11's -P flag as backup.
#python#tooling#debugging - 21:07ai
The Most-Used Coding Model Is Not the Benchmark King
OpenCode's usage board is led by cheap open models, not benchmark kings. How I read usage, retention, and price before switching models.
TL;DR: Benchmark leaders like GPT-5.6 top SWE-Bench, yet deepseek-v4-flash leads OpenCode's real-world usage, suggesting cost, speed, and context length matter more than peak scores. The author recommends checking usage volume, momentum, and weekly retention as satisfaction signals. Treat official model lists as a starting point, then validate against usage data and a small trial in your own repo before committing.
#llm#benchmark#deepseek - 19:19tooling
One Qwen chat for two articles: followups via chat URL
A --chat-url option lets EN translation reuse the existing Qwen chat, one chat for two articles, plus how force-cache works in Next.js 15.
TL;DR: The author's translation pipeline burned through free Qwen quota because every generate run opened a new chat, so they added a --chat-url option to reuse existing sessions, halving quota use. Next.js 15 stopped caching fetch by default, requiring explicit force-cache settings. A tldr-tolerant push now ignores server metadata, preventing CI failures.
#automation#qwen#nextjs - 04:50ai
My Scraper Kept Catching My Own Prompt Echo
An accessibility snapshot caught my own prompt instead of the AI answer. The fix: echo rejection, clipboard-first extraction, and a recover subcommand.
TL;DR: Chat scrapers fail when the answer anchor matches the user's own echoed prompt, so the fix filters template markers and length. Virtualized rendering hides offscreen text anyway, making clipboard reads via the Copy button the reliable data path over DOM snapshots. A .url sidecar written before polling lets the script recover finished answers without resending.
#automation#playwright#qwen - 02:34ai
AI Agent Auto-Publishing: Brakes Beat Gas
A blog pipeline that researches, writes, verifies, and publishes on its own, plus the four gates that make it trustworthy.
TL;DR: The author's blog publishes articles fully automatically via a 2-hour cron pipeline that researches, drafts, verifies, and posts without human touch. Safety comes from strong brakes: verification gates that reject bad content, automatic rollback after publishing, and escalation to humans for taste calls. Full-auto is trusted only for mechanical tasks; editorial judgment stays human.
#ai-agents#automation#ci-cd