Blog
Writing about software engineering, AI, and building things.
Understanding CSRF: Why Cookies Aren't Enough
The Problem Imagine you're logged into bank.com. While browsing the web, you visit evil.com which contains this innocent-looking link: Win a Free iPhone! 🎁 When you click, your browser sends the request to bank.com with your authentication cookies a...
Expanding RAG Search with MCP Tools: Augmenting AI Responses with Function Calling
Introduction: The Problem with Basic RAG When building [Kaiwakai](https://www.kaiwakai.com/), a Japanese learning application, I implemented a RAG (Retrieval-Augmented Generation) system to help users search through podcast transcripts and vocabulary...
Building a RAG Search System for a Japanese Learning App with Next.js and OpenAI
Introduction Kaiwakai is a Japanese language learning app that helps users practice listening through video content. Each lesson includes a YouTube video, bilingual transcripts, and vocabulary lists organized by JLPT level. While building the app, I ...
Analyzing Stagehand's Source Code: Classic Design Patterns Solving Modern AI Problems
Introduction Analyzing open source code is one of the best ways to become a better developer. Open source projects often require highly generic implementations, forcing developers to use advanced design patterns and architectural techniques. Understa...