Skip to main content
luke@terminal:/blog$ ls
luke@terminal:/blog$ ls -la posts/

BLOG

Why I Started This Blog

luke@terminal:/blog$ cat why-i-started-this-blog.md
Created: 2026-04-01 | Modified: 2026-03-31 | 2 min read

I've had blogs before. Let them die. This one's about documenting what I build and what breaks along the way.

I Fixed Velite Watch Mode Problem (And Immediately Broke It Again)

luke@terminal:/blog$ cat fixing-velite-watch-mode-irony.md
Created: 2026-03-23 | Modified: 2026-03-31 | 3 min read

The irony of debugging Velite watch mode: I restored code that was intentionally removed to fix double builds. Here's what happened.

I Nuked My X History with a ZeroWork TaskBot

luke@terminal:/blog$ cat nuking-x-history-zerowork-taskbot.md
Created: 2026-03-22 | Modified: 2026-03-22 | 3 min read

I wanted to start fresh on X, but my history was flooded with content I no longer cared about that I had retweeted years ago. Sketchy deletion tools wanted my credentials. So I built a ZeroWork TaskBot to delete everything instead.

Draft Posts Still Showing in Production: My Velite Filtering Journey

luke@terminal:/blog$ cat velite-draft-filtering-not-working.md
Created: 2026-03-22 | Modified: 2026-03-30 | 5 min read

Velite's draft filtering wasn't working in production. Here's what I tried, why it failed, and what finally fixed it.

OpenCode Nested Commands: $1 Solution, -102 Lines

luke@terminal:/blog$ cat opencode-nested-slash-commands-architecture.md
Created: 2026-01-13 | Modified: 2026-03-30 | 2 min read

I tried to make a slash command call another slash command in OpenCode. It doesn't work. Here's what I discovered and how I consolidated two duplicate commands into one.

Git Said My Objects Were Corrupt - How I Recovered Without Losing Anything

luke@terminal:/blog$ cat git-corrupt-object-recovery.md
Created: 2026-01-08 | Modified: 2026-03-30 | 5 min read

Got 'fatal: loose object is corrupt' when running git log. Three empty object files, repository broken. Here's how I recovered everything using git fetch and why moving files instead of deleting them was right call.

Adding Draft Posts to Velite: Why 'draft: true' Isn't Enough

luke@terminal:/blog$ cat adding-draft-posts-to-velite.md
Created: 2026-01-05 | Modified: 2026-03-30 | 7 min read

I wanted to hide draft posts in production. Thought I could just add draft: true to frontmatter. Turns out Velite needs explicit schema definition AND filtering logic.

I Broke My Blog Review System Trying to Beat Session Limits

luke@terminal:/blog$ cat premature-optimization-multi-agent-prompts.md
Created: 2026-01-04 | Modified: 2026-03-30 | 7 min read

I broke my entire blog review system trying to reduce prompt overhead so I could fit more messages into Claude's session limits. My 'optimization' saved 1,100 tokens but cost me 5 hours of debugging. Here's what I learned about premature optimization in multi-agent systems.

Why Claude Code Still Prompts for Edits to .claude/ Files (Even with Auto-Accept On)

luke@terminal:/blog$ cat claude-code-accept-edits-claude-directory.md
Created: 2026-01-03 | Modified: 2026-01-14 | 3 min read

I thought auto-accept edits mode was broken. Turns out it's a security feature protecting Claude Code's configuration files - and here's why that's actually brilliant.

I Built an AI to Debate Itself So My AI Instructions Don't Bloat

luke@terminal:/blog$ cat ai-debates-itself-to-review-my-ai-instructions.md
Created: 2025-12-28 | Modified: 2026-03-29 | 7 min read

I wasn't updating my CLAUDE.md file enough. When I asked Claude to do it, I got bloat. So I built a multi-agent debate system where AI argues with itself to keep instructions lean.

I Built a Multi-Agent System to Review My Blog Posts (And It Actually Works)

luke@terminal:/blog$ cat building-multi-agent-blog-review-system.md
Created: 2025-12-28 | Modified: 2026-03-30 | 18 min read

How I created a four-agent workflow system to transform raw notes into authentic blog posts - complete with debates, convergence protocols, and real expert frameworks.

Installing @tailwindcss/typography Was Not The Solution I Needed

luke@terminal:/blog$ cat tailwind-typography-plugin-troubles.md
Created: 2025-12-09 | Modified: 2026-03-29 | 4 min read

Added @tailwindcss/typography to fix bullet points. It worked, but suddenly headings and code blocks looked terrible. Here's why plugins aren't always the answer.

Setting Up an Asus Router Behind an ISP Modem: My Unexpected Gotchas

luke@terminal:/blog$ cat asus-router-setup-journey.md
Created: 2025-11-27 | Modified: 2026-03-28 | 5 min read

I bought an Asus RT-BE88U router to replace my ISP's Fritzbox WiFi. What I thought would be simple turned into a two-hour networking adventure. Here's what tripped me up.

Fixing Unraid Docker Containers After Upgrading - The Missing Label Problem

luke@terminal:/blog$ cat unraid-docker-label-fix.md
Created: 2025-11-26 | Modified: 2026-03-26 | 3 min read

After upgrading Unraid from 6.9 to 7.0.1, all my Docker containers became unmanageable - marked as '3rd party' and locked out of updates. Here's how I fixed it without recreating everything.

Building my career timeline

luke@terminal:/blog$ cat building-my-career-timeline.md
Created: 2025-11-24 | Modified: 2026-03-26 | 6 min read

I added a career timeline to my About page. Not for a resume, but because building it taught me something unexpected about both code and career. Here's what I learned.

Adding Shiki for a pop of colour in my code blocks was a struggle

luke@terminal:/blog$ cat adding-syntax-highlighting-shiki.md
Created: 2025-11-23 | Modified: 2026-03-28 | 4 min read

I wanted to add syntax highlighting to my Velite/Next.js blog using Shiki. Seemed straightforward - install packages, configure, done. Wrong. Here's what went wrong and how I fixed it.

Setting Up Velite with Next.js 16

luke@terminal:/blog$ cat setting-up-velite-nextjs-revised.md
Created: 2025-11-16 | Modified: 2026-03-06 | 6 min read

Spent hours debugging Velite with Next.js 16 - wrong imports, watch mode not working with Turbopack, async params, and more.