Blog Posts

Dissecting 13 models on Opencode GO: $10/month, which model should be used for what?

Dissecting 13 models on Opencode GO: $10/month, which model should be used for what?

I used to have 5 API keys for 5 different providers. DeepSeek had one key, MiniMax had one key, OpenRouter had a balance, Anthropic had a subscription… Every end of the month, I would sit and check each dashboard to see how much money was spent, which key was about to expire, which balance had only 3 cents left.

Read More
Claude Code has superpowers, but nobody tells you how to unlock them, this plugin does that.

Claude Code has superpowers, but nobody tells you how to unlock them, this plugin does that.

When I first started using Claude Code, I opened the terminal, typed claude, and then… sat staring at the blinking cursor. I knew it had hooks, MCP servers, skills, subagents, plugins - an entire ecosystem of extension points that Anthropic had been heavily promoting. But where to start? Which ones were actually useful for my project? How do I configure them after installation?

Read More
Claude-Mem: When AI Agents Can Remember Everything You've Done

Claude-Mem: When AI Agents Can Remember Everything You've Done

Claude-Mem: When AI Agents Can Remember Everything You’ve Done Last week, I opened Claude Code to continue the feature I was working on - and realized I had to explain the entire project context from scratch.

Read More
9Router: A Lifesaver for Devs as AI Coding Becomes Increasingly Expensive

9Router: A Lifesaver for Devs as AI Coding Becomes Increasingly Expensive

9Router: A Lifesaver for Devs as AI Coding Becomes Increasingly Expensive Introduction: Why is the “AI Summer” Making Your Wallet Cry? In recent months, the AI coding community has received some unpleasant news:

Read More
Graceful Shutdown: Benefits and Reasons to Have It

Graceful Shutdown: Benefits and Reasons to Have It

There was a time when our team deployed a new version at 11 pm. After running kubectl rollout restart, 30 seconds later, PagerDuty alerted: 200 502 errors in 5 seconds. Customers were placing orders when they encountered a timeout. We quickly rolled back, then checked the logs - it turned out that the old pod was terminated with SIGTERM, the HTTP server shut down immediately, and 50 requests being processed were cut off entirely.

Read More
Goroutine management: errgroup, leak-proof, backpressure

Goroutine management: errgroup, leak-proof, backpressure

Last month, one of our team’s services suddenly slowed down like a turtle. The p50 latency jumped from 50ms to 3 seconds. Upon checking Grafana, there were 120,000 goroutines running - normally, there are only 200. Someone had just pushed code and forgotten to call defer cancel() in a batch processing loop.

Read More
When to use cache and when not to

When to use cache and when not to

There is a production bug that I still remember vividly: user A cancels an order, but the app still displays “delivering” for the next 10 minutes. Support receives 30 tickets in one morning. The reason: cache TTL is 10 minutes, but no one invalidates it when the order status changes.

Read More
API Filtering: retrieving data like a coffee connoisseur

API Filtering: retrieving data like a coffee connoisseur

In my first year of working, I once wrote an endpoint GET /api/menus that returned… the entire menu. 200 items every time it was called. The JSON was 1.2MB heavy. The frontend only needed the name and price of 10 active dishes. I remember the first thing my lead said: “You’re sending the entire warehouse to someone who just needs to view the menu, aren’t you?”

Read More
Context in Go: passing data, deadline, cancel - use correctly or die of performance

Context in Go: passing data, deadline, cancel - use correctly or die of performance

When I first coded in Go, I encountered a strange production bug: after running for 3-4 days, the service suddenly consumed 8GB of RAM and caused an OOM error. I spent the entire Friday afternoon debugging and finally discovered the issue: a goroutine never ended because I forgot to pass the context to the gRPC call. Each request leaked a goroutine, and after 100K requests, the server was overwhelmed.

Read More