Latest Blog Posts

Speaking Chinese with an AI agent (2026-07-21)

Using 1-click setup scripts for server management (2026-07-03)

Teaching Claude how to use NotebookLM for me (2026-06-20)

Optimising a Pokémon-playing bot in a timed feedback loop (2026-06-05)

Using spec-driven development to vibecode a music composition tool (2026-05-23)

Building a bot to play Pokémon games (2026-05-08)

How I used coding agents in March 2026 (2026-04-04)

Look for ratchets (2026-02-08)

Evolving AI agent UX (2026-01-13)

More ways to manage AI Agents (2026-01-02)

Adding an LLM hint button to Anki flashcards (2025-12-13)

Parallels between AI Agents and People Management (2025-11-24)

Analysing Anki statistics to assess language learning progress (2025-11-07)

Using Python scripts to enhance Anki for Chinese learning (2025-10-31)

RAG chatbot in 5 minutes (2025-10-17)

Setting Up a Secure VPS (2025-10-07)

Web Development for Data Scientists: Core functionality and a DevSecOps foundation (2022-11-22)

Organisational Strategy from First Principles: the OODA loop (2022-11-09)

Introduction to Web Development for Data Scientists (2022-11-02)