Claude Code Auto Mode: Its Built-In Rules, and Why One Allow Rule of Yours Drops 17 of Them
Start Claude Code in auto mode with claude --permission-mode auto, or press Shift+Tab in a session.
Read more →Thoughts, tutorials, and updates on coding and technology
RSS: dankdev.com/feed.xml — plain XML, no signup, no email address, no account.
60 posts, 2025–2026 · Claude Code (20) · ffmpeg/video (17) · AI coding agents (23) · search & SEO (6) · npm packages (3) · Raspberry Pi (3)
Start here: YouTube Shorts Automation · What Does a Month of Autonomous Coding Agents Cost? My Ledger · scrollWidth Does Not Detect Clipping · Make Your Terminal Glow When Claude Code Needs You · An E-Invoice Conformance Engine That Reads PDFs
Start Claude Code in auto mode with claude --permission-mode auto, or press Shift+Tab in a session.
Read more →Claude Code keeps your settings, CLAUDE.md, plugins, transcripts and memory in ~/.claude, and its own state in ~/.claude.json.
Read more →Run claude doctor from your shell for a report on the install and your settings files; run /doctor inside a session for a checkup that can also fix things.
Read more →git worktree add ../proj-feature -b feature, then claude in that folder, or claude --worktree: both ways to give a second Claude Code session its own checkout.
Read more →A Claude Code hook is a matcher plus a command in settings.json; the command gets the event as JSON on stdin and answers with an exit code or JSON on stdout.
Read more →A Claude Code plugin marketplace is a folder with .claude-plugin/marketplace.json (name, owner, plugins), and each plugin in it has its own .claude-plugin/plugin.json (only name is required).
Read more →claude -c continues the latest conversation in the current directory; claude -r opens a picker or takes a session ID or name; /resume does the same from inside a session.
Read more →A skill is .claude/skills/<skill-name>/SKILL.md, a custom slash command is a Markdown file in .claude/commands/ (the docs now call it the older format of a skill).
Read more →ffmpeg -i in.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" out.gif, measured on ffmpeg 4.4.2: the bytes and colour accuracy of a GIF with and without a palette, at 10 and 15 fps.
Read more →claude mcp add for a stdio server and for an HTTP server, run here at --scope local, project and user, with the file each one wrote and the JSON inside it.
Read more →What claude --dangerously-skip-permissions turns off and what it leaves on, quoted from Claude Code's own docs: deny rules, ask rules, critical-path rm prompts and PreToolUse hooks still apply, protected paths do not.
Read more →The four settings files Claude Code reads (user, shared project, project local, managed) with the precedence order from its docs, a complete settings.json with permissions, env.
Read more →ffmpeg's overlay filter puts a PNG logo on a video: overlay=W-w-24:24 is the top-right corner.
Read more →ffmpeg -i video.mp4 -i audio.wav -map 0:v -map 1:a -c:v copy -c:a aac -shortest out.mp4 swaps the sound and copies the picture packet for packet (same SHA256 before and after).
Read more →ffmpeg -i in.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k out.mp4, measured: bytes, SSIM and PSNR at CRF 18, 23, 28 and 33, three presets, H.265 at its default, and a two-pass encode aimed at 10 MB.
Read more →ffmpeg -vf drawtext puts a centred title on a video in one command.
Read more →hstack puts two videos side by side and vstack puts one above the other, if their heights (or widths) match.
Read more →setpts=PTS/2 plus atempo=2 plays a video twice as fast with the sound in step and at the same pitch.
Read more →Soft subtitles go into an MP4 with -c copy -c:s mov_text and leave every video packet byte-identical; burned-in ones need -vf subtitles= and a re-encode.
Read more →ffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4 joins matching clips without re-encoding: 3 s + 4 s came out 7.000000 s, the same 210 pictures. On a 1080x1920 30 fps clip plus a 1920x1080 25 fps one it exited 0 and wrote a broken file.
Read more →ffmpeg -loop 1 -i image.png -i audio.wav -c:v libx264 -tune stillimage -pix_fmt yuv420p -shortest out.mp4 turns one picture into a video as long as its audio. Except it did not: a 4 s tone gave a 6.080000 s video.
Read more →One ffmpeg command normalizes loudness to a target. On dynamic speech one pass landed at -15.6 LUFS against a -14 target, and two passes at -15.3, because linear mode fell back to dynamic.
Read more →ffmpeg -ss START -to END -i in.mp4 -c copy out.mp4 trims without re-encoding, but the file starts at the keyframe before START.
Read more →Pasted text, AI output included, can carry characters you cannot see: no-break spaces, zero-width spaces, joiners, direction marks, soft hyphens and byte order marks.
Read more →Thin wedges from PixiJS Graphics shapes to the corner or centre of the screen, on phones only, come from not-a-number coordinates in the vertex buffer.
Read more →The permissions.allow rule forms that stop the prompts for test, lint and read-only git commands, which of the three settings files to put them in.
Read more →One settings.json block and one bash script, no jq: after every Edit or Write, run Prettier, Ruff or Black, gofmt, rustfmt or shfmt on the file Claude touched, then hand Ruff's or ESLint's errors back to Claude the documented way.
Read more →The keys that stop Claude Code mid-turn, cancel a running tool call and quit, as its own docs give them.
Read more →The formula that turns a Bluetooth RSSI into metres, a table of what TxPower and the path-loss exponent n do to the answer, 126 real RSSI readings from a Raspberry Pi 5 scan showing how much the signal jitters.
Read more →One PreToolUse hook and one bash script that refuse rm -rf aimed at / or home, git push --force, git reset --hard, curl piped into a shell and any read or write of .env files.
Read more →Two Claude Code hooks, one short bash script: a desktop notification and a sound whenever Claude finishes or needs your permission, titled with the project it is working in and carrying Claude's own message.
Read more →A copy-paste statusLine block for settings.json and one bash script with no jq that prints the model, the folder, the git branch, the session cost and how full the context window is.
Read more →If your Wi-Fi keeps dropping and you suspect a deauthentication attack, here is a one-line tcpdump filter, a short standard-library Python detector that flags a burst.
Read more →One ffmpeg command lowers background music whenever someone speaks. Its defaults only pull the music down 5.6 dB under a normal voice, though.
Read more →Three standard ffmpeg commands turn a widescreen clip into a 1080x1920 vertical video. Each one throws something different away.
Read more →The YouTube Data API can upload and schedule Shorts from a script.
Read more →A sitemap <loc> and a rel=canonical are both saying 'this is the address of this page', and when they disagree you have not published a preference, you have published an argument.
Read more →IndexNow is free, takes an afternoon, and almost nobody publishes a measured answer to the obvious question.
Read more →The standard advice for finding cut-off content is scrollWidth > clientWidth. I walked all 1616 elements of one ordinary page with it and got 240 hits, not one of which was cutting anything off.
Read more →A static site generator rewrites every file on every build, so every mtime is 'now', so a naive sitemap swears all 2,194 pages changed today — again tomorrow, and the day after.
Read more →Every article about traffic assumes the answer is Google.
Read more →Over ten days, 106 of the 187 verified tasks an autonomous coding system completed were the system repairing its own output or its own test machinery — 12.8M of 23.4M tokens, against 4 pageviews on the posts it wrote in the same window.
Read more →An autonomous agent kept reporting an empty backlog while the backlog sat right there on the board.
Read more →Vendor pricing pages tell you what a token costs. They don't tell you what a finished piece of work costs, because that depends on how much your agents burn getting nowhere.
Read more →A working recipe for splitting agent work between an expensive model and a cheap one, using fixed test vectors the cheap model is not allowed to edit.
Read more →Every SEO guide says depth wins. I had five pages that earned Google referrals, tripled their word count, and then checked what each page actually weighed on the day it first ranked.
Read more →Email Address Obfuscation is on by default and rewrites anything email-shaped at the edge, after your origin has already served the bytes. A scoped npm identifier with a version pin is email-shaped.
Read more →Leave the repository field out of package.json and every relative link in your README resolves against npmjs.com instead of your repo.
Read more →Twenty-five days of after-the-fact numbers from a continuously-running coding agent. Nine runs died mid-task; four were killed by the wording of the task, none by the model or the token budget.
Read more →Three pinned @ffmpeg/core builds are GPL-configured, including the MIT-labeled one. Swapping in WebCodecs plus a vendored MIT muxer worked — but it moved three jobs from FFmpeg's shoulders onto ours.
Read more →How VerifyHash validates invoices against EN 16931 and Germany's XRechnung, differential-tested against the official Schematron, emits SARIF for CI, and reads the XML embedded inside Factur-X / ZUGFeRD PDFs.
Read more →Twenty small, tested, zero-dependency packages — nineteen on the @verifyhash npm scope, plus the polyatic-extension logic layer: geodesy, solar and lunar math, climate and weather indices, and everyday CSV/CIDR/SemVer utilities.
Read more →A persistent, per-session visual signal that lights up the right terminal the moment a Claude Code session is waiting on you — built on hooks, the process tree, and a handful of OSC escape codes.
Read more →How we built a fully automated pipeline on a Raspberry Pi 5 that generates and uploads daily YouTube Shorts across 5 channels using AI for scripts, voice, music, SFX, and video.
Read more →Build your own self-hosted phone system with SMS messaging, call management, and SIM card storage. A complete guide to creating a personal communication gateway.
Read more →Learn how we built an automated X (Twitter) posting system with intelligent queue management, optimal scheduling, and image automation for @N33QPics that posts 4 times daily.
Read more →Introducing WiFi Security Monitor v1: A Python-based security toolkit featuring deauth attack detection and network device monitoring with behavioral analysis.
Read more →The Oscillationa bot has been enhanced with Replicate's Flux Pro image generator and now creates one video per day, showcasing ongoing improvements in automated creative systems.
Read more →Both N33Q.com and Oscillationa.com now feature improved pagination systems for better navigation and user experience across all content.
Read more →We've added more challenging cryptography puzzles to 33o1.com. Discover what's new and test your decoding skills.
Read more →Nearly every write-up here starts with something on one of my own sites behaving in a way I could not explain, and ends with a number read off a terminal rather than an opinion. 13 of the 60 posts carry a measurement or analytics tag in their own frontmatter, and several exist because the measurement contradicted what I had assumed: the one on content length went back through git to find what five already-ranking pages actually weighed on the day they first ranked, and the order of events came out the reverse of the usual advice. Where something could not be established, the post says so — “What I am not claiming” and “Honest limits” are real section headings in here, not decoration.
The oldest entries, from 2025, are short release notes for things I had just shipped, and they read like it. The long investigations are all from 2026.
Counted from the posts' own frontmatter tags. The groups overlap on purpose — a post about whether a sitemap edit moved anything is tagged for both search and measurement and is counted in both — so they add up to more than the collection holds.
If you arrived from a search, this is the shortest route from the thing you asked to the post that answers it.
scrollWidth > clientWidth. Walked across all 1616 elements of one ordinary
page it returned 240 hits and not one of them was cutting anything off. The post explains
the ways that reading lies, gives a replacement probe that scored 0 on the same page and
still fires on a box that genuinely clips, and then lists what neither probe can see.