A pegboard wall of bicycle workshop tools, every wrench and plier hung in rows in full view

How to Build an MCP Server (and Read What It Costs per Turn)

The quickstart gets you a working MCP server in twenty minutes. What it doesn’t say: every tool you define is a paragraph the model reads before every reply, for as long as the server is connected. Build one, then read what it ships.

September 18, 2026 · 10 min · Vladimir Cvetić
A network patch panel with numbered ports, one blue cable plugged into port 074 among grey ones

What to Use Instead of Firebase for Chat

Every list of Firebase alternatives is a list of databases. If the thing you built on Firebase is chat, that’s the wrong list. Here are the options for chat specifically, with what each one makes you rebuild and what its bill looks like.

September 18, 2026 · 11 min · Vladimir Cvetić
A hand holding a typed index card at the front of an open library card catalog drawer

What Goes in CLAUDE.md, and What Belongs in an ADR

You read the previous post and pasted the why into CLAUDE.md, and now that paragraph rides along on every task the agent ever runs. The sign belongs there. The reason doesn’t.

September 9, 2026 · 8 min · Vladimir Cvetić
Four walled-off app containers, each holding its own green presence dot, with the links between them severed

Presence Was Supposed to Be Infrastructure

XMPP didn’t lose. The web turned presence into a product and rented it back to us one app at a time. Matrix isn’t the successor — it’s a different bet, and the thing it turned off is the P.

August 31, 2026 · 8 min · Vladimir Cvetić

ADRs for AI-Assisted Codebases: Write Down Why, or the Agent Will Undo It

ADRs were written for the future engineer who asks ‘why is it like this?’ That engineer is now an AI agent, it arrives in minutes instead of years, and it doesn’t ask - it refactors.

August 23, 2026 · 4 min · Vladimir Cvetić
Context is an architectural surface

Context Is an Architectural Surface

Context isn’t what you paste into the prompt. It’s what the model sees, prioritizes, and is constrained by. That’s not prompting — that’s system design.

February 23, 2026 · 5 min · Vladimir Cvetić
Why you shoud not use Firebase for your real-time chat. TLDR; Jabber is great

Why you shoud not use Firebase for your real-time chat. TLDR; Jabber is great

Many developers have fallen into the trap of using Firebase as a quick fix for real-time chat. With just a few lines of code, you can push messages to a database and have them sync across clients in real time. It’s a magical feeling – within an afternoon, you can get a basic chat working in your web or mobile app. No server code, no infrastructure headaches. Sounds too good to be true, doesn’t it?

May 27, 2025 · 13 min · Vladimir Cvetić