<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>frr.dev</title><link>https://www.frr.dev/</link><description>Recent content on frr.dev</description><generator>Hugo -- 0.161.1</generator><language>en-US</language><lastBuildDate>Mon, 01 Jun 2026 14:54:58 +0200</lastBuildDate><atom:link href="https://www.frr.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Agentic Experience: The Agent's Error Log is the Blueprint for Your CLI</title><link>https://www.frr.dev/posts/cli-design-ai-agents-errors/</link><pubDate>Fri, 22 May 2026 09:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/cli-design-ai-agents-errors/</guid><description>An AI agent made over 500 errors using a CLI across 165 sessions. Its error log serves as a reverse blueprint for the interface you should have designed.</description></item><item><title>Cloudflare's "Ask AI" created an API token with read access to my entire account</title><link>https://www.frr.dev/posts/cloudflare-ask-ai-api-token/</link><pubDate>Thu, 21 May 2026 11:30:00 +0200</pubDate><guid>https://www.frr.dev/posts/cloudflare-ask-ai-api-token/</guid><description>Cloudflare&amp;#39;s in-dashboard AI assistant silently provisioned a permanent, read-everything API token across all my accounts, zones and users.</description></item><item><title>Sentry Frontend Blocked by Brave: How to Fix it with a Tunnel</title><link>https://www.frr.dev/posts/sentry-frontend-brave-shields-tunnel/</link><pubDate>Mon, 18 May 2026 18:30:00 +0200</pubDate><guid>https://www.frr.dev/posts/sentry-frontend-brave-shields-tunnel/</guid><description>Brave Shields blocks Sentry even with shields down. Learn how to fix it with your own Flask tunnel and avoid three undocumented gotchas.</description></item><item><title>Agentic Experience: 1,324 calls to my CLI, 15.9% error rate</title><link>https://www.frr.dev/posts/agentic-experience-data-driven-cli-design-llm/</link><pubDate>Wed, 29 Apr 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/agentic-experience-data-driven-cli-design-llm/</guid><description>I analyzed 1,324 real calls from Claude Code to my Linear CLI. 15.9% failed. The errors reveal how to design tools that agents can use without breaking.</description></item><item><title>The Two-Tier Pattern in Apple Silicon: Cheap Deterministic Code First, CoreML for the Heavy Lifting</title><link>https://www.frr.dev/posts/two-tier-pipeline-deterministic-coreml/</link><pubDate>Sat, 18 Apr 2026 20:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/two-tier-pipeline-deterministic-coreml/</guid><description>The same architectural pattern solves sentiment analysis and image cleanup: deterministic first, CoreML only for what remains. PyTorch → ONNX → Apple Neural Engine in three commands.</description></item><item><title>The Adversarial Collisions that Broke Apple’s CSAM System (and Why They Matter Beyond Apple)</title><link>https://www.frr.dev/posts/perceptual-hash-adversarial-collisions/</link><pubDate>Sat, 18 Apr 2026 18:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/perceptual-hash-adversarial-collisions/</guid><description>In August 2021, researchers broke NeuralHash in less than two weeks. The attack wasn’t a fluke—it’s a structural property of the perceptual hash family. The EU is legislating on this.</description></item><item><title>64 Bits Decide What You Can Upload to the Internet: The Algorithm Behind Chat Control</title><link>https://www.frr.dev/posts/perceptual-hash-eu-chat-control/</link><pubDate>Sat, 18 Apr 2026 12:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/perceptual-hash-eu-chat-control/</guid><description>The EU Chat Control and Apple’s failed on-device scanning rely on the same 40-line Python algorithm. Understanding how it works is essential for informed discussion.</description></item><item><title>Your CLI Has a New User—and It’s Not Human</title><link>https://www.frr.dev/posts/cli-agent-experience-design-llm-first/</link><pubDate>Tue, 07 Apr 2026 20:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/cli-agent-experience-design-llm-first/</guid><description>Agent Experience (AX) principles are changing how CLIs are designed when the primary user is an LLM. Output that’s token-efficient, fuzzy matching, actionable errors, and zero mandatory flags.</description></item><item><title>Apple's On-Device Model is Terrible for Chat But Surprisingly Good at Structured Output and Tool Calling</title><link>https://www.frr.dev/posts/apple-on-device-model-terrible-chat-great-structured-output/</link><pubDate>Tue, 07 Apr 2026 11:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/apple-on-device-model-terrible-chat-great-structured-output/</guid><description>I built a macOS app to stress-test every capability of Apple Intelligence on-device. The 3B model is mediocre at free-form text, but with constrained decoding and tool calling, the results are surprisingly good.</description></item><item><title>Apple's sentiment analysis thinks 'delete the temp file' is a death threat</title><link>https://www.frr.dev/posts/apple-nltagger-sentiment-bias-developer-text/</link><pubDate>Sun, 05 Apr 2026 11:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/apple-nltagger-sentiment-bias-developer-text/</guid><description>Apple&amp;#39;s NLTagger scores &amp;#39;delete the temp file&amp;#39; as -0.8 (very negative). It&amp;#39;s systematic bias in technical text that nobody has documented. Data, causes, and an open source solution.</description></item><item><title>Bridging async Swift to sync C: Four Functions to Use Apple's LLM from Any Language</title><link>https://www.frr.dev/posts/libfoundationmodels-apple-llm-c-ffi-bridge/</link><pubDate>Sun, 05 Apr 2026 11:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/libfoundationmodels-apple-llm-c-ffi-bridge/</guid><description>libfoundationmodels exposes Apple&amp;#39;s on-device LLM as a 4-function C dylib. The async Swift → sync C bridge using Mutex and DispatchSemaphore, and why this is more useful than a local HTTP server.</description></item><item><title>I'm paying $15 per million tokens to write 'fix: typo'</title><link>https://www.frr.dev/posts/foundation-hooks-on-device-llm-git-issue-tracking/</link><pubDate>Sun, 05 Apr 2026 11:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/foundation-hooks-on-device-llm-git-issue-tracking/</guid><description>Coding agents use $15/M token cloud models for commit messages. foundation-hooks replaces them with Apple&amp;#39;s on-device LLM: 300ms, 0 tokens, 0 cost. Open source repo with make install.</description></item><item><title>TurboQuant, one month later: implementations, controversy, and what actually works</title><link>https://www.frr.dev/posts/turboquant-one-month-later-implementations-controversy-benchmarks/</link><pubDate>Sun, 05 Apr 2026 11:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/turboquant-one-month-later-implementations-controversy-benchmarks/</guid><description>Google&amp;#39;s TurboQuant paper got 575 points on HN and crashed memory stocks. One month later: which implementations actually work, the RaBitQ controversy Google won&amp;#39;t address, and how to run it on your Mac today.</description></item><item><title>Your Mac Has a Free LLM and You're Not Using It</title><link>https://www.frr.dev/posts/apple-intelligence-free-llm-dev-tooling/</link><pubDate>Sat, 04 Apr 2026 11:00:00 +0200</pubDate><guid>https://www.frr.dev/posts/apple-intelligence-free-llm-dev-tooling/</guid><description>Apple Intelligence includes a 3B-parameter model on your Mac. Learn how to use it for classification, naming, triage, and commit messages without paying for APIs. Copy-pasteable Swift recipes.</description></item><item><title>Three Agents Walk into a Bar: My Experiment to Code More and Spend Less</title><link>https://www.frr.dev/posts/ai-coding-router-experiment/</link><pubDate>Mon, 30 Mar 2026 20:31:34 +0200</pubDate><guid>https://www.frr.dev/posts/ai-coding-router-experiment/</guid><description>My plan to distribute work among Claude, Codex, and GLM/Z.AI without automating too early, cutting costs without losing judgment.</description></item><item><title>In Codex, a Skill Is Not a /Command (but in Claude Code, It Almost Is)</title><link>https://www.frr.dev/posts/codex-skills-not-slash-commands/</link><pubDate>Mon, 30 Mar 2026 18:30:00 +0200</pubDate><guid>https://www.frr.dev/posts/codex-skills-not-slash-commands/</guid><description>If you&amp;#39;re coming from Claude Code, this will save you some serious frustration: in Codex, a skill is not a slash command. They&amp;#39;re used for different purposes.</description></item><item><title>NLTagger and Sentiment Analysis: Why Apple Thinks Your Code is Depressing</title><link>https://www.frr.dev/posts/nltagger-sentiment-bias-technical-text/</link><pubDate>Sat, 28 Mar 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/nltagger-sentiment-bias-technical-text/</guid><description>Apple&amp;#39;s NLTagger scores perfectly neutral technical text as negative. An empirical analysis of bias, why it happens, and what to use instead.</description></item><item><title>Claude in the Morning, Codex in the Afternoon: The Two-Agent Workflow You Didn't Know You Needed</title><link>https://www.frr.dev/posts/claude-mornings-codex-afternoons-two-agent-workflow/</link><pubDate>Thu, 26 Mar 2026 22:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-mornings-codex-afternoons-two-agent-workflow/</guid><description>165 sessions with Claude Code and 27 with Codex CLI reveal a clear pattern: each agent excels in different tasks. Learn how to organize your day with two AI copilots.</description></item><item><title>The Best Thing That's Happened to Python in Decades Is Written in Rust</title><link>https://www.frr.dev/posts/python-tooling-rust-uv-ruff-ferris-was-right/</link><pubDate>Thu, 26 Mar 2026 21:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/python-tooling-rust-uv-ruff-ferris-was-right/</guid><description>Python has had a fragmented and slow tooling ecosystem for years. The revolution came from where nobody expected: Rust. uv, Ruff and ty have changed the game. The Cult of Ferris was right.</description></item><item><title>150 Lines of Apologies Removed</title><link>https://www.frr.dev/posts/skill-before-after-tolerant-tool-fewer-instructions/</link><pubDate>Thu, 26 Mar 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/skill-before-after-tolerant-tool-fewer-instructions/</guid><description>My Linear skill had 150 lines of workarounds: hardcoded UUIDs, curl fallbacks, notes like &amp;#39;the CLI doesn’t support X.&amp;#39; I didn’t rewrite them — I made them unnecessary by building a tolerant tool.</description></item><item><title>Madness Driven Design: Don Quixote, Sancho Panza, and Your AI Copilot</title><link>https://www.frr.dev/posts/madness-driven-design-don-quixote-sancho-panza-ai-copilot/</link><pubDate>Thu, 26 Mar 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/madness-driven-design-don-quixote-sancho-panza-ai-copilot/</guid><description>MDD: a methodology for designing tools that absorb the hallucinations of your AI copilot. Two layers—error archaeology and adversarial verification—inspired by Don Quixote and Sancho Panza.</description></item><item><title>Why My CLI Output Isn't XML (And How I Ended Up Reinventing TOON Without Knowing It)</title><link>https://www.frr.dev/posts/cli-output-xml-toon-token-efficient-llm/</link><pubDate>Thu, 26 Mar 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/cli-output-xml-toon-token-efficient-llm/</guid><description>XML repeats tags, JSON repeats keys. When your consumer is an LLM, every token counts. The story of how I ended up with a compact positional format and discovered it already existed: TOON.</description></item><item><title>Adversarial Programming: When Your AI Copilot Invents APIs</title><link>https://www.frr.dev/posts/adversarial-programming-ai-copilot-invents-api/</link><pubDate>Thu, 26 Mar 2026 11:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/adversarial-programming-ai-copilot-invents-api/</guid><description>Your AI generates plausible code against non-existent APIs. Schema introspection, real fixtures, and fetch/process separation: the anti-hallucination methodology that works.</description></item><item><title>Linear Agent Isn’t What You Need. Your Agent Was Already in the Terminal</title><link>https://www.frr.dev/posts/linear-agent-cli-rust-agent-already-had/</link><pubDate>Wed, 25 Mar 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/linear-agent-cli-rust-agent-already-had/</guid><description>Linear launched their AI agent. Sounds great, but what we really needed was a functional CLI that didn’t suck. And if we have to rewrite it, let’s do it in Rust.</description></item><item><title>Transform and Conquer: How Google Compresses LLMs 6x by Changing Coordinates</title><link>https://www.frr.dev/posts/transform-conquer-turboquant-polar-coordinates-llm-compression/</link><pubDate>Wed, 25 Mar 2026 11:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/transform-conquer-turboquant-polar-coordinates-llm-compression/</guid><description>TurboQuant compresses LLM KV cache 6x without losing precision. The trick: don&amp;#39;t invent a better compressor, move data to polar coordinates where compression becomes trivial.</description></item><item><title>Your AI Writes Code That Compiles but Means Nothing (and a Linter Can Catch It)</title><link>https://www.frr.dev/posts/type-system-linter-llm-stringly-typed-code/</link><pubDate>Mon, 23 Mar 2026 21:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/type-system-linter-llm-stringly-typed-code/</guid><description>LLMs generate code that compiles but abuses strings, optionals, and nil where specific types should exist. How to detect it with a linter and an auditing skill.</description></item><item><title>Your plan.md Needs a Devil's Advocate (and Codex Volunteers for the Job)</title><link>https://www.frr.dev/posts/plan-md-second-opinion-claude-codex-review/</link><pubDate>Mon, 23 Mar 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/plan-md-second-opinion-claude-codex-review/</guid><description>A developer got Claude and Codex to argue about their plan until it was solid. The idea is brilliant: use a second model as an adversarial reviewer. 14 bugs caught, zero human intervention.</description></item><item><title>Mole: The Mac Cleanup Tool You Didn’t Know You Needed (But Only Two Commands Matter)</title><link>https://www.frr.dev/posts/mole-mo-purge-analyze-mac-cleanup/</link><pubDate>Mon, 23 Mar 2026 13:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/mole-mo-purge-analyze-mac-cleanup/</guid><description>Mole promises to clean and optimize your Mac. After testing it all, only two commands are worth your time: mo purge and mo analyze. The rest is just fluff.</description></item><item><title>Working with an AI agent is like living with the protagonist of Memento</title><link>https://www.frr.dev/posts/zoxide-ai-agent-memory-project-paths/</link><pubDate>Sat, 14 Mar 2026 16:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/zoxide-ai-agent-memory-project-paths/</guid><description>Your AI agent doesn&amp;#39;t remember where your projects are. zoxide and CLAUDE.md are the solution: a smart cd and a memory tattoo so they stop getting lost.</description></item><item><title>A Kalman Filter to Stop Bothering the Server (Or the Guilty Pleasure of Over-Engineering)</title><link>https://www.frr.dev/posts/bayesian-estimator-adaptive-polling-battery/</link><pubDate>Thu, 12 Mar 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/bayesian-estimator-adaptive-polling-battery/</guid><description>How a scalar Kalman filter reduces network calls by 80% in a menu bar app, adapts to battery status, and sleeps on its own when you&amp;#39;re inactive.</description></item><item><title>My Setup: Claude Code + Ghostty + Worktrees on a Mac</title><link>https://www.frr.dev/posts/claude-code-ghostty-worktrees-mac-setup/</link><pubDate>Wed, 11 Mar 2026 23:55:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-code-ghostty-worktrees-mac-setup/</guid><description>How I combine Ghostty, git worktrees, and Claude Code in my daily macOS development workflow. No flickers, massive scrollback, and true parallelism with worktrees.</description></item><item><title>Codex CLI Lacks Worktrees (Here's How to Set Them Up Yourself)</title><link>https://www.frr.dev/posts/codex-cli-worktrees-manual-parallelism/</link><pubDate>Wed, 11 Mar 2026 23:45:00 +0100</pubDate><guid>https://www.frr.dev/posts/codex-cli-worktrees-manual-parallelism/</guid><description>Codex CLI doesn’t support --worktree or --tmux. But with manual Git worktrees and a few tricks, you can achieve real parallelism. A practical guide with the bugs you’ll encounter.</description></item><item><title>Five Game-Changing Worktree Tricks in Claude Code to Transform Your Workflow</title><link>https://www.frr.dev/posts/claude-code-worktrees-parallel-agents-tips/</link><pubDate>Wed, 11 Mar 2026 23:30:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-code-worktrees-parallel-agents-tips/</guid><description>Claude Code has native support for git worktrees: --worktree, isolated sub-agents, custom agents with isolation, --tmux for parallel sessions. Five tips from Boris Cherny.</description></item><item><title>The Week When Boring Discipline Beat Magic</title><link>https://www.frr.dev/posts/boring-discipline-beats-magic-roundup/</link><pubDate>Wed, 11 Mar 2026 23:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/boring-discipline-beats-magic-roundup/</guid><description>PostgreSQL without sharding, a while loop without architecture, cron without cloud platforms. Six articles saying the same thing: boring discipline works better than flashy technology.</description></item><item><title>Codex CLI Full-Auto Mode: Two Flags to Stop the Approval Prompts</title><link>https://www.frr.dev/posts/codex-cli-autonomous-agent-two-flags/</link><pubDate>Wed, 11 Mar 2026 22:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/codex-cli-autonomous-agent-two-flags/</guid><description>Tired of Codex CLI asking permission for every file? Use --full-auto or -a never -s workspace-write for autonomous agent mode. Step-by-step guide with Claude Code comparison.</description></item><item><title>Context engineering: the invisible skill that separates good AI agents from mediocre ones</title><link>https://www.frr.dev/posts/context-engineering-invisible-skill-ai-agents/</link><pubDate>Wed, 11 Mar 2026 22:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/context-engineering-invisible-skill-ai-agents/</guid><description>Prompt engineering is writing a good prompt. Context engineering is designing EVERYTHING the model sees: what goes in, in what order, what gets discarded, what gets compressed. And it&amp;#39;s what really matters.</description></item><item><title>I've Declared Email Bankruptcy (Again), but This Time I Have a Plan</title><link>https://www.frr.dev/posts/email-bankruptcy-memento-reminders/</link><pubDate>Wed, 11 Mar 2026 21:30:00 +0100</pubDate><guid>https://www.frr.dev/posts/email-bankruptcy-memento-reminders/</guid><description>Email is an inbox anyone can fill with junk. I&amp;#39;ve declared bankruptcy multiple times. This time, instead of promising to manage my inbox better, I’ve decided to stop using it as a reminder system.</description></item><item><title>Five Nonexistent Experts Review Your Startup Before You Build It</title><link>https://www.frr.dev/posts/launch-council-mvp-llm-adversarial-review/</link><pubDate>Wed, 11 Mar 2026 21:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/launch-council-mvp-llm-adversarial-review/</guid><description>I designed a council of five simulated LLM experts to evaluate MVPs before writing code. Paul Graham, Lessig, Godin, Balaji, DHH — and why each one is part of the team.</description></item><item><title>DIY Codex Automations: Nocturnal Agents with Claude Code and systemd</title><link>https://www.frr.dev/posts/diy-codex-automations-claude-code-systemd/</link><pubDate>Wed, 11 Mar 2026 20:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/diy-codex-automations-claude-code-systemd/</guid><description>A practical tutorial to replicate OpenAI&amp;#39;s Codex Automations using Claude Code, systemd timers, and Gitea. Agents that work while you sleep, without relying on any desktop app.</description></item><item><title>OpenAI scales PostgreSQL for 800 million users with a single writer (no sharding)</title><link>https://www.frr.dev/posts/openai-postgresql-800m-users-single-writer/</link><pubDate>Wed, 11 Mar 2026 20:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/openai-postgresql-800m-users-single-writer/</guid><description>OpenAI serves 800M ChatGPT users with a single PostgreSQL primary and ~50 replicas. No sharding, no microservices. Deliberate simplicity beats over-engineering.</description></item><item><title>Your AI coding agent is a while loop with delusions of grandeur</title><link>https://www.frr.dev/posts/ai-coding-agent-anatomy-while-loop/</link><pubDate>Wed, 11 Mar 2026 20:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/ai-coding-agent-anatomy-while-loop/</guid><description>Codex CLI and Claude Code look like magic, but inside they&amp;#39;re just a loop with 5 phases, an LLM, and tools. We break down the agentic loop step by step with diagrams.</description></item><item><title>A 2,500-Layer Neural Network That Turned Out to Be MD5: What This Teaches About Debugging</title><link>https://www.frr.dev/posts/reverse-engineer-neural-network-senior-debugging/</link><pubDate>Wed, 11 Mar 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/reverse-engineer-neural-network-senior-debugging/</guid><description>Jane Street hid MD5 inside a neural network with integer weights. The process to uncover it is a masterclass in debugging that every senior should study.</description></item><item><title>Your LLM's Cache Charges You Double to Save You Money (And It Makes Sense)</title><link>https://www.frr.dev/posts/llm-cache-cost-counterintuitive-savings/</link><pubDate>Tue, 10 Mar 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/llm-cache-cost-counterintuitive-savings/</guid><description>Prompt caching reduces input cost by 90%, but cache writes cost 25% extra. Your bill goes up before it goes down. Here&amp;#39;s how it works and how to manage your expenses.</description></item><item><title>From /simplify to the Jedi Council: How I Built a Code Review with Kent Beck, Martin Fowler, and Mike Acton</title><link>https://www.frr.dev/posts/simplify-jedi-council-ai-code-review/</link><pubDate>Mon, 09 Mar 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/simplify-jedi-council-ai-code-review/</guid><description>/simplify by Claude Code reviews your code with three generic agents. It&amp;#39;s okay, but it creates noise. I replaced it with a Jedi Council: Kent Beck, Martin Fowler, and Mike Acton with real decision rules. Fewer findings, zero false positives, and one bug the other tool missed.</description></item><item><title>/loop in Claude Code: the cron that lives and dies with your terminal</title><link>https://www.frr.dev/posts/claude-code-loop-vs-cron-scheduling/</link><pubDate>Mon, 09 Mar 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-code-loop-vs-cron-scheduling/</guid><description>Claude Code 2.1.71 introduces /loop, an inline scheduler for recurring tasks. What it does, how to use it, and why it doesn’t quite replace a proper cron job.</description></item><item><title>33,000 lines of XML to tell you heavyWork() is slow: how I tamed xctrace for LLMs</title><link>https://www.frr.dev/posts/ztrace-xctrace-compact-summary-llm/</link><pubDate>Sun, 08 Mar 2026 14:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/ztrace-xctrace-compact-summary-llm/</guid><description>xctrace exports 33,000-line XML files that blow up any LLM&amp;#39;s context window. ztrace condenses them into 10 actionable lines. How and why.</description></item><item><title>The Wrong Path Must Be Impossible, Not Forbidden</title><link>https://www.frr.dev/posts/impossible-path-ai-agent-guardrails/</link><pubDate>Fri, 27 Feb 2026 20:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/impossible-path-ai-agent-guardrails/</guid><description>When an AI agent operates your ETL pipeline, forbidding things doesn&amp;#39;t work. Only making the wrong path structurally impossible works.</description></item><item><title>Anatomy of Claude Code's Remote Control: The Hidden API You Can't Use Yet</title><link>https://www.frr.dev/posts/claude-code-remote-control-hidden-api/</link><pubDate>Fri, 27 Feb 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-code-remote-control-hidden-api/</guid><description>Anthropic announced Remote Control for Claude Code. We investigated the bridge API, WebSockets, on-disk traces, and why it still doesn&amp;#39;t work for all Max accounts in February 2026.</description></item><item><title>RustyClaw: I'm rewriting an AI agent in Rust (because the meme demands it)</title><link>https://www.frr.dev/posts/rustyclaw-manifesto-rewrite-ai-agent-rust/</link><pubDate>Tue, 24 Feb 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/rustyclaw-manifesto-rewrite-ai-agent-rust/</guid><description>I’m porting 8,300 lines of Python to Rust using LLMs as copilots. The real goal: testing adversarial development in a hardcore porting process. With raw data and a hallucination counter.</description></item><item><title>My AI Read a JSON File from Disk 900 Times in a Loop (And Why No Linter Can Save You)</title><link>https://www.frr.dev/posts/llm-read-json-900-times-loop-performance/</link><pubDate>Tue, 24 Feb 2026 14:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/llm-read-json-900-times-loop-performance/</guid><description>An LLM wrote code that read and parsed a JSON file from disk on every iteration of a 900-file loop. It&amp;#39;s a first-year computer science mistake. No linter can catch it.</description></item><item><title>git-cliff: the changelog that writes itself (almost)</title><link>https://www.frr.dev/posts/git-cliff-automatic-changelog/</link><pubDate>Sun, 22 Feb 2026 22:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/git-cliff-automatic-changelog/</guid><description>How to use git-cliff to generate retroactive changelogs from conventional commits, with tags, Tera templates and a couple of tricks that aren&amp;#39;t in the documentation.</description></item><item><title>How to estimate your Claude quota when Anthropic cuts off the tap</title><link>https://www.frr.dev/posts/tokamak-estimating-claude-quota-without-api/</link><pubDate>Sun, 22 Feb 2026 20:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/tokamak-estimating-claude-quota-without-api/</guid><description>Tokamak reads Claude Max quota with cookies. Anthropic just banned third-party OAuth. Here&amp;#39;s how we prepare with statistics for the day they shut down the API.</description></item><item><title>macOS Notarization: the nightclub bouncer Apple put on your app</title><link>https://www.frr.dev/posts/macos-notarization-guide-linter/</link><pubDate>Sun, 22 Feb 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/macos-notarization-guide-linter/</guid><description>What Apple notarization is, why it exists, the most common errors that will drive you crazy, and a 25-check script so you never fail again.</description></item><item><title>macOS Virtual Machines in a Single Command</title><link>https://www.frr.dev/posts/tart-macos-vms-from-terminal/</link><pubDate>Sat, 21 Feb 2026 14:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/tart-macos-vms-from-terminal/</guid><description>I needed to test my app on a clean macOS. UTM can&amp;#39;t be scripted. Tart can: one brew install and a command to get a macOS VM with shared folder.</description></item><item><title>Why 99% of What You Send to Claude Is Already Cached</title><link>https://www.frr.dev/posts/prompt-caching-99-percent-cache-hit/</link><pubDate>Thu, 19 Feb 2026 16:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/prompt-caching-99-percent-cache-hit/</guid><description>Your LLM remembers almost everything you told it 30 seconds ago. Not by magic: through KV tensors, GPU VRAM, and local SSDs. Here&amp;#39;s how prompt caching works under the hood.</description></item><item><title>Summoning the Wise: How to Use an LLM as a Mentoring Session with Any Expert</title><link>https://www.frr.dev/posts/summoning-the-wise-mentoring-experts-llm/</link><pubDate>Wed, 18 Feb 2026 20:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/summoning-the-wise-mentoring-experts-llm/</guid><description>You can ask an LLM to simulate Edward Tufte critiquing your chart or Charlie Munger reviewing your budget. And it works surprisingly well.</description></item><item><title>Beads Is Dead. Long Live the Linear CLI</title><link>https://www.frr.dev/posts/beads-is-dead/</link><pubDate>Wed, 18 Feb 2026 14:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/beads-is-dead/</guid><description>I&amp;#39;m retiring Beads from my Claude Code workflow. What it brought to the table, why it stopped working, and what replaced it.</description></item><item><title>Git Worktrees: How to Have Multiple AI Agents Working Simultaneously Without Conflicts</title><link>https://www.frr.dev/posts/git-worktrees-coding-agents-parallel/</link><pubDate>Mon, 16 Feb 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/git-worktrees-coding-agents-parallel/</guid><description>If you use coding agents like Claude Code, Cursor, or Copilot, a single checkout falls short. Git worktrees give you multiple working directories on the same repo without copying anything.</description></item><item><title>5 Defenses Against Code Hallucinations (and Why Only 3 Work)</title><link>https://www.frr.dev/posts/five-defenses-code-hallucinations/</link><pubDate>Mon, 16 Feb 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/five-defenses-code-hallucinations/</guid><description>Detailed analysis of 5 reactive measures against LLM-generated fictitious code: contract testing, real fixtures, smoke tests, anomaly detection, and LLM-as-Judge. Which ones work and which are just theater.</description></item><item><title>Silent failure: when your AI makes stuff up and tests say everything's fine</title><link>https://www.frr.dev/posts/silent-failure-ai-makes-stuff-up-tests-everything-fine/</link><pubDate>Fri, 13 Feb 2026 10:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/silent-failure-ai-makes-stuff-up-tests-everything-fine/</guid><description>LLMs don&amp;#39;t just lie: they build coherent fictions with DTOs, fixtures, and tests that validate the lie. And today we have no reliable way to detect it.</description></item><item><title>MEMORY.md: the field notebook your AI writes itself</title><link>https://www.frr.dev/posts/memory-md-claude-code-field-notebook/</link><pubDate>Thu, 12 Feb 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/memory-md-claude-code-field-notebook/</guid><description>Claude Code has a file where it takes notes between sessions. You don&amp;#39;t write it. It writes it. And almost nobody knows it exists.</description></item><item><title>When Security Asks Permission So Often You Stop Reading</title><link>https://www.frr.dev/posts/authorization-fatigue-1password-cache/</link><pubDate>Thu, 12 Feb 2026 15:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/authorization-fatigue-1password-cache/</guid><description>If your security tool asks for authorization every 30 seconds, you end up saying yes without looking. Here&amp;#39;s how we created a cache for op that solves the problem without compromising security (we think).</description></item><item><title>When Your AI Becomes Your Worst Enemy</title><link>https://www.frr.dev/posts/when-your-ai-becomes-your-worst-enemy/</link><pubDate>Fri, 06 Feb 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/when-your-ai-becomes-your-worst-enemy/</guid><description>How the inherent incentives of an LLM can turn a routine task into a disaster. Lessons from a real post-mortem.</description></item><item><title>39 Million Secrets Leaked on GitHub. Yours Could Be Next.</title><link>https://www.frr.dev/posts/git-secrets-1password-cli/</link><pubDate>Thu, 05 Feb 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/git-secrets-1password-cli/</guid><description>39 million credentials leaked on GitHub in 2024. AWS, OpenAI, production tokens... all exposed. Here&amp;#39;s how I stopped playing Russian roulette with my secrets.</description></item><item><title>Apple installed 84GB of jellyfish on my Mac. Duplicated.</title><link>https://www.frr.dev/posts/apple-84gb-jellyfish-duplicated-ssd/</link><pubDate>Thu, 29 Jan 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/apple-84gb-jellyfish-duplicated-ssd/</guid><description>I wanted to test Kimi K2 and was running out of disk space. Turns out macOS stores screensavers duplicated. Yes, two copies of 42GB of jellyfish videos.</description></item><item><title>Your Brain Was Already Using AI Algorithms Before AI Even Existed</title><link>https://www.frr.dev/posts/bfs-vs-dfs-how-we-think-and-search/</link><pubDate>Wed, 28 Jan 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/bfs-vs-dfs-how-we-think-and-search/</guid><description>BFS and DFS aren&amp;#39;t just algorithms: they&amp;#39;re the two ways your brain navigates the world. And your professional success depends on which one you master.</description></item><item><title>Claude Code Native Build: 100MB Binary to Ditch Node for Good</title><link>https://www.frr.dev/posts/claude-code-native-build-bun/</link><pubDate>Tue, 27 Jan 2026 21:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-code-native-build-bun/</guid><description>Anthropic has released a native executable of Claude Code that doesn&amp;#39;t need Node.js. It weighs 100MB. Why? I&amp;#39;ll explain what&amp;#39;s inside and who really wins with this change.</description></item><item><title>The Half-Life of Your Skills Is 2 Years (And Dropping)</title><link>https://www.frr.dev/posts/half-life-skills-continuous-learning/</link><pubDate>Tue, 27 Jan 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/half-life-skills-continuous-learning/</guid><description>Your experience has an expiration date. The data on professional obsolescence and what to do to avoid being left behind.</description></item><item><title>Clawdbot: The open-source AI assistant that's revolutionizing (and worrying) half the internet</title><link>https://www.frr.dev/posts/clawdbot-ai-assistant-space-lobster/</link><pubDate>Mon, 26 Jan 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/clawdbot-ai-assistant-space-lobster/</guid><description>Clawdbot is the open source AI assistant that exploded on GitHub. 17,000 stars, 300 security issues, and a space lobster. Here&amp;#39;s what it is and why it matters.</description></item><item><title>claudevm.bundle: the hidden 10.8 GB Ubuntu VM in Claude Desktop</title><link>https://www.frr.dev/posts/claude-vm-cowork-code-comparison/</link><pubDate>Sun, 25 Jan 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-vm-cowork-code-comparison/</guid><description>That 10.8 GB claudevm.bundle in Claude Desktop&amp;#39;s vm_bundles folder is a hidden Ubuntu VM (Cowork). What it does, why it&amp;#39;s there, and how to delete it safely.</description></item><item><title>Your Terminal is Burning Battery Like It's Mining Bitcoin</title><link>https://www.frr.dev/posts/terminal-gpu-battery-macbook-ghostty-iterm2/</link><pubDate>Sat, 24 Jan 2026 19:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/terminal-gpu-battery-macbook-ghostty-iterm2/</guid><description>How a 1970s-era application like a terminal emulator can consume more battery than Zoom with video. The irony, the causes, and the solutions.</description></item><item><title>Linear, Beads and Tasks: Three Memory Layers for Claude Code</title><link>https://www.frr.dev/posts/tasks-vs-beads-claude-code-memory/</link><pubDate>Fri, 23 Jan 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/tasks-vs-beads-claude-code-memory/</guid><description>Tutorial on the three tracking layers in Claude Code: Linear for strategic vision, Beads for tactical work, and Tasks for execution. When to use each one.</description></item><item><title>Subagents in Claude Code: Delegating without losing control</title><link>https://www.frr.dev/posts/subagents-claude-code-tutorial/</link><pubDate>Tue, 20 Jan 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/subagents-claude-code-tutorial/</guid><description>Tutorial on subagents in Claude Code: how to launch them, communicate with them, run them in parallel, and create your own</description></item><item><title>Why the hell is git status so slow?</title><link>https://www.frr.dev/posts/slow-git-notebooks-fsmonitor-nbstripout/</link><pubDate>Mon, 19 Jan 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/slow-git-notebooks-fsmonitor-nbstripout/</guid><description>Your repo with notebooks takes forever to run git status. Here&amp;#39;s why and how to fix it with FSMonitor and nbstripout.</description></item><item><title>ChromaDB: How to use a vector database to avoid screwing up your teaching</title><link>https://www.frr.dev/posts/chromadb-tutorial-curriculum-validation/</link><pubDate>Sun, 18 Jan 2026 14:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/chromadb-tutorial-curriculum-validation/</guid><description>Practical ChromaDB tutorial: building a system that automatically verifies that educational material doesn&amp;#39;t use concepts before teaching them. Semantic search for busy people.</description></item><item><title>Bun: The Runtime That Wants to Retire Node (and Now Has the Cash to Do It)</title><link>https://www.frr.dev/posts/bun-tutorial-devs-node/</link><pubDate>Sun, 18 Jan 2026 12:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/bun-tutorial-devs-node/</guid><description>Complete Bun tutorial for TypeScript developers already using Node, pnpm and Vitest. What it is, why Anthropic just bought it, and how to migrate without breaking everything.</description></item><item><title>Claude Code Skills: Teaching New Tricks to an Old Dog</title><link>https://www.frr.dev/posts/claude-code-skills-tutorial/</link><pubDate>Mon, 12 Jan 2026 18:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/claude-code-skills-tutorial/</guid><description>Tutorial on creating Skills in Claude Code v2.1.3+: custom commands that your AI can execute automatically</description></item><item><title>Linear and Beads: How to Prevent Your AI from Getting Alzheimer's</title><link>https://www.frr.dev/posts/linear-beads-ai-memory/</link><pubDate>Sun, 12 Jan 2025 17:00:00 +0100</pubDate><guid>https://www.frr.dev/posts/linear-beads-ai-memory/</guid><description>Tutorial on using Linear for product management and Beads as persistent memory for AI agents like Claude Code</description></item><item><title>About Fernando Rodríguez</title><link>https://www.frr.dev/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.frr.dev/about/</guid><description>Fernando Rodríguez — CTO at KeepCoding, Guinness World Record holder, and developer writing about AI agents, Swift, Python, and building things that work.</description></item><item><title>Tokamak — Privacy Policy</title><link>https://www.frr.dev/tokamak/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.frr.dev/tokamak/privacy/</guid><description>Privacy Policy for Tokamak, the Claude Quota HUD for macOS</description></item></channel></rss>