Blog

Building RAG with Gemini File Search

Over the past months I’ve been sharing how I code with LLMs day-to-day and, crucially, how I test the systems based on them. Today I want to take that a step further and tie those strands together around a topic...

Testing LLM-based Systems

Large Language Models (and AI in general) broke the rules traditional QA was built on. Even at temperature=0, you can’t expect the same output twice. Under the hood, GPUs run thousands of floating-point operations in parallel; tiny rounding differences or...

Test-Driven AI Development (TDAID)

There’s rarely been a better time to write about software engineering. The AI world moves at breakneck speed — every week brings a new model, framework, or “agentic” idea promising to reshape how we build software. For bloggers like me,...

Understanding Playwright Agents

In my recent Agentic Coding Tips post, I mentioned how AI tools like Cursor and Copilot, when combined with Playwright MCP, can dramatically speed up the process of planning and generating tests. With the latest Playwright 1.56 release, things just...

AI + Chrome DevTools MCP: Trace, Analyse, Fix Performance

Google has released a potentially significant tool for AI-driven web development and testing: an official Chrome DevTools MCP integration. In plain terms, Chrome DevTools can now hook into AI coding assistants via the Model Context Protocol (MCP). Chrome DevTools MCP...