automation
Technical notes on web development, DevOps, and AI integration.
40 articles
- 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 - 22:45frontend
I Filled the Textarea, React Never Noticed
The text visibly entered the textarea, yet React never saw a change. Why plain assignment fails on controlled components and how the native prototype setter fixes it.
TL;DR: Automating React apps like DeepSeek fails when you set textarea.value directly, because React replaces the setter on each element instance and swallows non-user input events. The fix: grab the native setter from HTMLTextAreaElement.prototype, call it with your text, then dispatch a bubbling input event. Since the icon-only send button has no label, press Enter instead.
#deepseek#react#automation - 19:31ai
My AI Found an Angle, Then Made Up a Stat
The chat surfaced a valid new angle and one unverifiable statistic. Finding angles and proving claims are different jobs; only one of them belongs to the chat.
TL;DR: An AI chat surfaced a genuinely new research angle, but then invented a stat attributed to Stanford HAI that couldn't be verified anywhere. The lesson: finding angles and proving claims are separate jobs, so the pipeline now asks AI for angles, then opens every primary source manually. Citations offer traceability, not truth; walking the trail is your job.
#ai-agents#llm#automation - 19:23devops
Exit Code 1, a 410, and a Fallback That Lied
The fallback fired, the article shipped, and the real failure was one clipboard probe returning 410 Gone. Diagnosis before fallback, now a written rule.
TL;DR: A clipboard probe returned HTTP 410, exposing that an automated fallback had silently routed around a Qwen generation failure. The fallback fired on exit code 1 without diagnosing the cause, so the pipeline looked green while the primary path rotted. Now every failure triggers a doctor script first, and exit codes are disambiguated.
#automation#debugging#docker - 11:57ai
How ChatGPT Memory Really Works Across Sessions
ChatGPT memory is not a real-time summary of your sessions. I break down the real mechanism: periodic synthesis, system prompt injection, and the privacy cost.
TL;DR: ChatGPT doesn't scan your chat history with RAG. Instead, it periodically synthesizes your conversations into a static profile injected into every new session's system prompt, including roughly your last 40 typed messages. Since deleting one chat won't erase derived insights, treat memory as a managed archive, not a perfect record.
#chatgpt#memory#privacy - 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 - 00:21ai
Cron Sent It Twice? Install an Idempotent Async Contract
A crashed cron loop resent the same prompt. A send-then-poll async contract plus two state files make Qwen chat generation safe to re-execute.
TL;DR: After a cron crash resent duplicate prompts and burned quota, the author swapped queue infrastructure for two empty files as idempotency keys: one marks the prompt sent, the other the result done. A four-state exit code contract (42, 3, 0, 1) mirrors the async request-reply pattern client-side. Since cron retries crashed jobs, making re-runs harmless beats a database or broker.
#automation#qwen#cron - 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