Writing

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

Build an MCP Server in Python: Tools, Resources, and Prompts

Step-by-step guide to building your first Model Context Protocol server with the official Python SDK: the three primitives, in-memory tests, and connecting it to Claude Desktop, Claude Code, Cursor, or VS Code.

Self-Host n8n and Build Your First AI Agent in 20 Minutes

Install n8n with Docker, connect a chat model, give the agent tools, and run automations without writing orchestration code. A 20-minute build: a GitHub stats agent with memory, plus when n8n beats Zapier, LangChain code, or Dify.

Supercharge Your Terminal with ripgrep, fzf, and bat

Three tools that replace grep -R, cat, and history scrolling for good. Real commands, real outputs, and the gotchas the READMEs warn about but most tutorials skip.

Build Your First MCP Server with Python

A hands-on tutorial using the current MCP Python SDK (v2). You will build a weather server, test it with an in-memory client, connect over stdio, and wire it into a real host like Claude Desktop.

Test Your AI Agent with pytest: An Eval Harness That Runs in CI

Chat demos do not catch the day your agent starts refunding orders it never looked up. Here is a pytest eval harness you can build in 30 minutes: golden dataset, deterministic tool-call checks, an LLM-as-judge for open-ended replies, and a CI gate.

Structured Outputs: Stop Parsing Broken LLM JSON

Prompting for JSON is not the same as getting JSON. A copy-paste guide to OpenAI and Anthropic structured outputs with Pydantic: raw JSON Schema, refusal handling, schema limits, and a full invoice extractor.

Semantic Search with Chroma: Retrieval Patterns That Actually Work

Hands-on semantic search with Chroma: real queries, metadata filters, full-text search, persistence, and a retrieval pipeline for RAG. Every snippet run for real, with the exact output printed.

Build Your Own MCP Server in Python

MCP lets Claude Desktop, Cursor, and other AI hosts use your tools without custom glue. Build a real weather server with the v2 Python SDK, test it in memory, over stdio, and over HTTP, then wire it into a host. Every snippet verified against mcp 2.0.0.

Trace Your AI Agent with Langfuse: Self-Hosted LLM Observability

An agent that misbehaves is a black box until you trace it. Self-host Langfuse with Docker Compose, instrument a tool-calling agent with the Python SDK, and see every LLM call, tool execution, token count, and cost in one trace tree.

Build an MCP Server in Python: From Zero to Working Tools

Step-by-step tutorial to build a custom MCP server in Python with SQLite-backed task management tools. Test it with the MCP Inspector, then connect it to Claude Desktop or VS Code.

Build Your First Multi-Agent System with CrewAI

Give each AI agent a specific role, hand them real tools, and let them collaborate. Build a research-and-writing crew that researches a topic and writes a report — in under 30 minutes, all in Python.

Build Your First MCP Server with Python

Give your LLM real tools. Build an MCP server in Python that exposes custom functions and resources — connect it to Claude Desktop in under 15 minutes.

Prompt Caching: Cut LLM API Costs by 50-90% with Claude and OpenAI

Stop paying full price for the same system prompt on every API call. A hands-on guide to prompt caching with Anthropic (automatic + explicit) and OpenAI — with copy-paste Python code and real cost comparisons.

Give Your LLM Superpowers: Build an MCP Server in 15 Minutes

A hands-on guide to building a Model Context Protocol server that lets Claude read your files, browse directories, and fetch URLs. Includes copy-paste Python code, MCP Inspector testing, and Claude Desktop integration.

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.