Writing

Thoughts on Cloud Computing, DevOps, and Software Engineering.
Sharing lessons learned from building scalable systems.

Build an MCP Client That Connects to Multiple Servers in Python

Most MCP tutorials stop at one client, one server. Real agents need many. This guide builds a Python client that connects to two MCP servers in parallel, prefixes their tools to avoid collisions, and hands them to Claude as Anthropic-format tool definitions.

Build a Tool-Using AI Agent with the Claude Agent SDK (Python)

Use Anthropic's official Claude Agent SDK to build a Python agent with custom tools, in-process MCP servers, PreToolUse hooks, and streaming output. Real code, no hand-waving.

Build Your First MCP Server in Python: A Hands-On Guide

Model Context Protocol is becoming the standard way to give LLMs access to tools and data. This guide walks you through building a real MCP server in Python, connecting it to Claude Code, and shipping it in under an hour.

Run a Local LLM Code Reviewer with Ollama and Continue.dev

A practical setup for a private, offline code reviewer. Pull a coding model in Ollama, wire it to VS Code through Continue, and review diffs without your code ever leaving the machine.

Ollama: Run Open-Source LLMs Locally with One Command

A hands-on guide to Ollama: install, pull a model, run it from the CLI, call it from Python and Node, build a custom Modelfile, and know when to use it instead of vLLM or a hosted API.

Load Testing with k6.io: Beginner's Guide

Practical tutorial on using k6.io for load testing. Includes example scripts and result interpretation for production environments.

Build an MCP Server with Python: A Practical Tutorial

Learn the Model Context Protocol by building a real MCP server with the Python SDK. Tools, resources, prompts, transport modes, and testing with the MCP Inspector, all with copy-paste code.

Structured Output Across LLM Providers: OpenAI, Anthropic, Gemini, Ollama

A side-by-side guide to forcing LLMs to return valid JSON. Real code for all four major providers, the gotchas that break production agents, and a fallback strategy for local models that do not support tool calling.

Build Your First MCP Server in TypeScript: A 30-Minute Hands-On Guide

Step-by-step tutorial to build a Model Context Protocol server in Node.js, expose tools, resources, and prompts, then connect it to Claude Desktop. Includes copy-paste code and the full TypeScript skeleton.

Run LLMs Locally with Ollama: From Install to a Production-Ready API

A hands-on walkthrough of running large language models on your own machine. Pull a model, hit the REST API, use the OpenAI-compatible endpoint, get structured output, and wire it all into a small RAG agent, all from one HTTP server.

Debug Any MCP Server in 5 Minutes with the MCP Inspector

A hands-on tour of the official MCP Inspector: launch it against npm, PyPI, or a local server, read the four tabs (Server, Resources, Prompts, Tools), and follow a workflow that catches the bugs you usually only find when a real agent connects.

Cut Your LLM Bill 90% with Claude Prompt Caching (A Practical Guide)

Prompt caching is the cheapest performance win in LLM apps. Here is how Anthropic, OpenAI, and Google price it, when to use 5-min vs 1-hour TTL, the lookback gotcha that silently breaks your cache, and a copy-paste Python pattern for tool-heavy agents.

Build Your First MCP Server in Python: A Practical Guide

MCP turns tools, files, and APIs into a standard protocol any LLM host can consume. Build a working server in 15 minutes with the Python SDK, then connect it to Claude Desktop or the MCP Inspector.

Build a Local AI Agent with Ollama and Function Calling

Run a tool-using LLM agent entirely on your machine. No API keys, no rate limits, no data leaving your laptop. Step-by-step with Ollama, a real tool, and a Python loop you can extend.

Build a Local MCP Server in Python and Wire It to Claude Code

A hands-on walkthrough of the Model Context Protocol: build a stdio MCP server in ~30 lines with FastMCP, expose filesystem and git tools, debug it with the MCP Inspector, and connect it to Claude Code or Cursor.