Timothy Joo

Building AI tools. Writing about what breaks.

I Had a Microsoft Interview in Two Weeks. So I Built a Resume Tool on Their SDK.

GitHub's Copilot SDK was 5 weeks old. I chose it, Azure Cosmos DB, Entra ID, and Container Apps — not because they were easy, but because I wanted to walk into a Microsoft interview and say 'I shipped a real app on your brand-new stack.'

Copilot SDKAzureTypeScriptAI Tools
March 4, 2026

Everything Passed. Everything Was Broken.

TypeScript passed. ESLint passed. Tests passed. Production had a hardcoded API key, a silent auth failure, and mismatched dependencies. The tools that were supposed to catch this don't check for this.

MCPClaude CodeTypeScriptOpen SourceDevOps
March 4, 2026

I Built a CLI That Reads My WhatsApp, iMessage, and Telegram — Then Writes Intelligence Reports

Action items get buried in chat. Decisions get forgotten. I built chatlens — a CLI that connects to WhatsApp, iMessage, and Telegram, categorizes messages by topic using an LLM, and writes structured markdown reports. All locally on your machine.

CLILLMWhatsAppOpen Source
March 4, 2026

Every Item on This Checklist Exists Because Something Broke

My AI told me all tests pass. It was right. But 40% of my code had zero tests. After enough failures like this, I started writing them down. Now that list blocks every deploy.

Claude CodeDeveloper ToolsCode QualityOpen Source
March 4, 2026

The Developer Advocates Are Dead, Long Live Developer Advocates

In 2023, everyone told me DevRel was dead. I listened and went a different direction. Two years later, I'm doing DevRel anyway — and AI companies are paying $460K for it.

DevRelAICareerDeveloper Tools
March 4, 2026

Your IDE Crashed. Its 10 Background Processes Didn't.

MCP servers, dev servers, headless browsers — when your IDE dies on macOS, every child process it spawned keeps running. There's no built-in cleanup. Hundreds of thousands of developers run kill-port every week because of this.

GomacOSOpen SourceAI ToolsDeveloper Tools
February 28, 2026

You've Already Solved This Bug. You Just Can't Find the Session.

Claude Code stores every conversation as a JSONL file. Hundreds of sessions, full history, no search. The answer to your current problem is probably in a session from last week.

Claude CodeMCPTypeScriptOpen Source
February 26, 2026

Claude Doesn't Need to Think That Hard About 'ok'

Every prompt gets the same thinking mode. Status pings, one-word replies, system design questions — all routed to the most expensive model. There's a cheaper way.

MCPClaudeTypeScriptOpen Source
February 20, 2026