English articles
MCP Is Dead? What's Actually Broken — and What Survives
The Model Context Protocol is taking heavy fire: token bloat, security holes, painful debugging. After running 10+ MCP servers daily, here's what's genuinely broken and what still earns its place.
When You Become the Bottleneck: The Human Role in the Claude Code Era
As AI writes the code, engineers are discovering they're the new constraint. Drawing on Satoshi Nakajima's newsletter and daily Claude Code use, I examine the three places humans still get stuck — and where our judgment still can't be replaced.
Beyond RAG: How I Designed AI Memory with Obsidian and Claude Code
RAG alone doesn't give an AI long-term memory. After a year running Obsidian Vault alongside Claude Code's memory system, here's how the two-layer design actually works — and where it still falls short.
What Is Vibe Coding? The Shift from Implementation to Intention
In April 2026, Vibe Coding received its first academic definition. As someone who builds with Claude Code without an engineering background, here's what the shift from implementation to intention actually looks like — and what skills it really demands.
7 Principles for AI Agent Tool Design — Lessons from Daily Production Use
Based on Anthropic and OpenAI's official guides and my own daily Claude Code experience: seven tool design principles that take an agent from 'works sometimes' to one you can genuinely trust.
Using the Filesystem as a Database with Claude Code
Inspired by Satoshi Nakajima's MulmoClaude, I reconsidered how Claude Code handles files. Six months running a 4,000-file Obsidian Vault showed what works — and where the limits are.
Building an MCP Server from Scratch in TypeScript — Zero to Claude Code
A hands-on record of building an MCP server in TypeScript with SDK v1 and connecting it to Claude Code. Covers minimal setup, live verification logs, tool design decisions, and when to choose MCP over a plain CLI script.
Claude Code Skills Design Patterns: Six Layers, One Decision Rule, Three Pitfalls
After bloating my CLAUDE.md into a context hog, I mapped Claude Code's six config layers — Rules, Commands, Skills, Agents, MCP, Plugins — and the one axis that keeps them clean.
I Built a Claude Code Slash Command to Clear 300 Unread Newsletters
A custom Claude Code slash command that fetches unread newsletters from Gmail, deep-reads each one individually, and saves a digest to Obsidian. Minimum setup and three weeks of usage data.
From Vibe Coding to Agentic Engineering — 5 Principles I Added to CLAUDE.md
Peter Steinberger calls vibe coding slang. After watching his 3-hour Lex Fridman interview, I extracted his agentic engineering principles and wired them into my CLAUDE.md the same day. Here's what I kept, what I skipped, and what paid off within hours.
Software as a Knowledge: When Code Becomes the Way You Think
How daily use of Claude Code shifted my knowledge management from Obsidian text notes to MCP servers, CLAUDE.md, and skills — executable software that acts on what I know without me having to look anything up.
GORM Save Silently Upserts Associations — How Deleted Records Come Back and How to Stop It
GORM's Save(&model) automatically upserts all associated records. If a deleted association reappears after Save, a concurrent goroutine is likely the culprit. Two-stage fix: Association().Delete as a quick patch, Omit as the permanent solution. Covers GORM v1 and v2.