All posts
Minecraft in 12 hours
A holiday side project: building a tiny Minecraft-like world in Python with the Ursina engine — blocks, terrain, trees, and a healthy dose of reality-checking along the way.
Windows Subsystem for Linux
Setting up Docker Desktop with WSL 2 on Windows — why Docker needs a Linux kernel, a step-by-step walkthrough, and how it gets you to the same Claude Desktop + MCP Toolkit setup as on macOS.
Cleaning up `.DS_Store` on MacOS
How to remove .DS_Store files that have already been pushed to GitHub, plus a breakdown of what the file is and how to prevent it from happening again with a global gitignore.
Model Context Protocol (Hands-on)
Hands-on exploration of MCP using Docker Desktop's MCP Toolkit and Claude Desktop — setting it up and testing it against Obsidian, GitHub, web scraping, YouTube, LinkedIn, and PostgreSQL MCP servers.
Agentic AI
Course notes on Agentic AI workflows — task decomposition, the four agentic design patterns (reflection, tool use, planning, multi-agent collaboration), evaluation, and practical tips for building and debugging agents.
The Journey of Optimization
Notes from optimizing a self-hosted LLM setup — keeping models warm, quantization tradeoffs on limited VRAM, and the configuration changes that finally got accurate answers out of web search + RAG.
Private GPT on Linux/WSL
Setting up a self-hosted ChatGPT alternative with Ollama and Open WebUI on Linux/WSL — installation, oAuth, OneDrive integration, and the lessons learned along the way.
Model Context Protocol
An introduction to the Model Context Protocol (MCP) — what it is, how its client-server architecture works, and how tools, resources, and prompts fit together.