Hi, I'm Vadim Alakhverdov
Software developer writing about JavaScript, web development, and the tools that make us productive.
Recent Posts
Monday 25/05/2026
· 10 min readBuild Generative UI with Vercel AI SDK: Stream React Components from an LLM
Build generative UI with the Vercel AI SDK — stream real React components from an LLM tool call, render partial state during streaming, and gracefully fall back when a tool isn't registered.
Friday 22/05/2026
· 11 min readPinecone vs Turbopuffer vs pgvector: Which Vector Database for Production RAG in 2026
A real benchmark of Pinecone, Turbopuffer, and pgvector for production RAG in TypeScript. Latency, recall, and monthly cost at 1M, 10M, and 100M chunks.
Wednesday 20/05/2026
· 13 min readBuild a Text-to-SQL Feature: Let Users Query Your Database in Plain English
Build a production-safe text to SQL TypeScript feature with Postgres. Schema context, Zod validation, sandboxed roles, EXPLAIN gating, and a self-correction loop.
Monday 18/05/2026
· 9 min readCut Your Claude API Bill by 90% Using Prompt Caching in TypeScript
How to use Anthropic prompt caching in TypeScript to cut Claude API costs by up to 90%. Where to place cache_control breakpoints, TTL tradeoffs, and real RAG cost data.
Friday 15/05/2026
· 12 min readWhen Your AI Feature Gets Gamed: Prompt Injection Defense for JavaScript Apps
Practical prompt injection defense for JavaScript web apps: input sanitization middleware, system prompt hardening, canary tokens, and output validation with a real attack test suite.
Wednesday 13/05/2026
· 11 min readHow to Write an AI Feature Spec That Engineers Won't Push Back On
An AI feature spec template with the eight sections engineers actually want: success metrics, fallback behavior, latency budgets, edge cases, and eval sets. Real before/after example.
Monday 11/05/2026
· 12 min readBuild a Voice-Enabled AI Assistant in the Browser with TypeScript
Build a voice AI assistant in the browser with TypeScript using the Web Speech API, an LLM, and speech synthesis. Handle interruption, wake words, and mobile quirks — no backend needed for speech.
Friday 08/05/2026
· 14 min readAdd AI-Powered Citations and Source Attribution to Your RAG Chatbot
Upgrade your RAG chatbot with inline citations using Claude's Citations API and a React UI that renders clickable source markers. Full TypeScript walkthrough including hallucination detection.
Wednesday 06/05/2026
· 10 min readHow to Structure Your TypeScript Codebase So AI Coding Agents Work Better
Practical TypeScript codebase patterns that make Claude Code, Cursor, and Copilot dramatically more effective. CLAUDE.md, module boundaries, typed configs, and the file-size rule that fixed our agent's worst habits.
Monday 04/05/2026
· 12 min readHow to Migrate from OpenAI Assistants API to Responses API in TypeScript
Migrate your OpenAI Assistants API integration to the Responses API in TypeScript before the mid-2026 sunset. Concept-by-concept mapping, before/after code diffs, and the gotchas nobody mentions.
Stay updated
Get notified when I publish new posts. No spam, unsubscribe anytime.