{
  "posts": [
    {
      "id": "agent-friendly-architecture",
      "slug": "agent-friendly-architecture",
      "title": "Software Architecture That Agents Actually Like",
      "date": "2026-01-30T00:00:00.000Z",
      "topics": [
        "agents",
        "architecture",
        "software-design"
      ],
      "type": "note",
      "wordCount": 478,
      "excerpt": "Structural patterns that make codebases easier for AI agents to navigate: composition over monoliths, stateless mini-CLIs, typed languages, and the editor navigation test."
    },
    {
      "id": "agentic-ai-anki-flashcard-creation",
      "slug": "agentic-ai-anki-flashcard-creation",
      "title": "Using Agentic AI Tools for Anki Flashcard Creation",
      "date": "2026-01-08T00:00:00.000Z",
      "topics": [
        "anki",
        "spaced-repetition",
        "agents",
        "learning",
        "claude-code",
        "languages"
      ],
      "type": "note",
      "wordCount": 598,
      "excerpt": "How Claude Code and similar tools can handle the tedious work of expanding concepts into multiple flashcards, and why Anki Connect is the key to making it work."
    },
    {
      "id": "ai-tool-wish-existed",
      "slug": "ai-tool-wish-existed",
      "title": "The AI Tool That I Wish Existed",
      "date": "2022-09-26T00:00:00.000Z",
      "topics": [
        "ai",
        "tools",
        "productivity",
        "knowledge-management",
        "creativity"
      ],
      "type": "note",
      "wordCount": 829,
      "excerpt": "Envisioning an AI-first productivity tool that anticipates, connects, and surfaces ideas rather than requiring explicit organisation"
    },
    {
      "id": "cheaper-code-more-experiments",
      "slug": "cheaper-code-more-experiments",
      "title": "Cheaper Code Should Mean More Experiments",
      "date": "2026-02-20T00:00:00.000Z",
      "topics": [
        "agents",
        "workflow",
        "experimentation"
      ],
      "type": "note",
      "wordCount": 384,
      "excerpt": "When working with agentic tools, the instinct to solve hard problems inside your main project is usually wrong. Isolate the core problem first, experiment freely, then bring what works back."
    },
    {
      "id": "conceptual-learning-anki-books",
      "slug": "conceptual-learning-anki-books",
      "title": "Thoughts on Conceptual Learning, Anki, Books & Physicality",
      "date": "2022-09-16T00:00:00.000Z",
      "topics": [
        "learning",
        "spaced-repetition",
        "knowledge",
        "cognition",
        "anki"
      ],
      "type": "note",
      "wordCount": 844,
      "excerpt": "Exploring why spaced repetition works for languages but fails for abstract, ladder-like concepts, and where solutions might lie"
    },
    {
      "id": "context-conversation-ideas",
      "slug": "context-conversation-ideas",
      "title": "Thoughts on Context and Conversation for Ideas",
      "date": "2022-10-03T00:00:00.000Z",
      "topics": [
        "conversation",
        "ideas",
        "knowledge",
        "learning",
        "creativity",
        "tools"
      ],
      "type": "note",
      "wordCount": 409,
      "excerpt": "Exploring how conversation and exploratory browsing create a 'mental latent space' where ideas emerge from unexpected connections"
    },
    {
      "id": "exploring-primitives-agentic-coding-setup",
      "slug": "exploring-primitives-agentic-coding-setup",
      "title": "Exploring the Primitives of an Agentic Coding Setup",
      "date": "2025-11-18T00:00:00.000Z",
      "topics": [
        "agents",
        "git",
        "infrastructure",
        "networking",
        "sqlite"
      ],
      "type": "note",
      "wordCount": 369,
      "excerpt": "Reflecting on the foundational layers of agentic systems, from Git workflows and networking to storage and sandboxing, rather than high-level orchestration."
    },
    {
      "id": "freeport-lightweight-port-management",
      "slug": "freeport-lightweight-port-management",
      "title": "Freeport: A Lightweight Port Management Tool for Development",
      "date": "2026-01-08T00:00:00.000Z",
      "topics": [
        "tools",
        "cli",
        "development",
        "agents"
      ],
      "type": "note",
      "wordCount": 392,
      "excerpt": "A thin wrapper around native commands to simplify port checking and process management during local development."
    },
    {
      "id": "global-vs-local-context-search",
      "slug": "global-vs-local-context-search",
      "title": "The Different Problems of Searching Global and Local Context",
      "date": "2022-10-31T00:00:00.000Z",
      "topics": [
        "search",
        "context",
        "information-retrieval",
        "ux",
        "tools"
      ],
      "type": "essay",
      "wordCount": 538,
      "excerpt": "Exploring why global-context search is easier than local-context search, and what tools built with local context in mind might look like"
    },
    {
      "id": "mountain-to-climb",
      "slug": "mountain-to-climb",
      "title": "Mountain to Climb",
      "date": "2026-02-20T00:00:00.000Z",
      "topics": [
        "economics",
        "visualisation",
        "data",
        "development"
      ],
      "type": "note",
      "wordCount": 146,
      "excerpt": "A tool for visualising how long economic catch-up growth actually takes between any two countries or regions"
    },
    {
      "id": "notes-on-robotics-untapped-potential",
      "slug": "notes-on-robotics-untapped-potential",
      "title": "Notes on Robotics and Untapped Real World Potential",
      "date": "2025-11-18T00:00:00.000Z",
      "topics": [
        "robotics",
        "automation",
        "drones",
        "future",
        "sports"
      ],
      "type": "note",
      "wordCount": 362,
      "excerpt": "Exploring the adjacent possible in robotics, where falling hardware costs and advanced software create new opportunities for high-quality automation in niche domains like local sports broadcasting."
    },
    {
      "id": "notes-on-llm-clock-face-limitations",
      "slug": "notes-on-llm-clock-face-limitations",
      "title": "Notes on LLM Clock Face Limitations",
      "date": "2025-11-18T00:00:00.000Z",
      "topics": [
        "llms",
        "generative-ai",
        "failures",
        "generalisation"
      ],
      "type": "note",
      "wordCount": 163,
      "excerpt": "LLMs struggle to generalise clock face generation beyond the standard 12 divisions, highlighting a specific gap in reasoning versus training data memorisation."
    },
    {
      "id": "quick-thought",
      "slug": "quick-thought",
      "title": "Why Can't I Talk to My Tools, and Why Don't They Know What to Do?",
      "date": "2022-09-22T00:00:00.000Z",
      "topics": [
        "thought",
        "ai",
        "ux",
        "communication"
      ],
      "type": "note",
      "wordCount": 240,
      "excerpt": "On the friction of retrieving information during conversations and the potential of contextual AI assistance"
    }
  ],
  "edges": [
    {
      "source": "agent-friendly-architecture",
      "target": "agentic-ai-anki-flashcard-creation",
      "type": "shared_topic",
      "weight": 0.3985844748858447,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "agent-friendly-architecture",
      "target": "cheaper-code-more-experiments",
      "type": "shared_topic",
      "weight": 0.5160730593607306,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "agent-friendly-architecture",
      "target": "exploring-primitives-agentic-coding-setup",
      "type": "shared_topic",
      "weight": 0.38,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "agent-friendly-architecture",
      "target": "freeport-lightweight-port-management",
      "type": "shared_topic",
      "weight": 0.45691780821917805,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "agentic-ai-anki-flashcard-creation",
      "target": "cheaper-code-more-experiments",
      "type": "shared_topic",
      "weight": 0.381324200913242,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "agentic-ai-anki-flashcard-creation",
      "target": "conceptual-learning-anki-books",
      "type": "shared_topic",
      "weight": 0.35,
      "sharedTopics": [
        "anki",
        "spaced-repetition",
        "learning"
      ],
      "label": "Shared: anki, spaced-repetition, learning"
    },
    {
      "source": "agentic-ai-anki-flashcard-creation",
      "target": "context-conversation-ideas",
      "type": "shared_topic",
      "weight": 0.11666666666666665,
      "sharedTopics": [
        "learning"
      ],
      "label": "Shared: learning"
    },
    {
      "source": "agentic-ai-anki-flashcard-creation",
      "target": "exploring-primitives-agentic-coding-setup",
      "type": "shared_topic",
      "weight": 0.37474885844748856,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "agentic-ai-anki-flashcard-creation",
      "target": "freeport-lightweight-port-management",
      "type": "shared_topic",
      "weight": 0.41666666666666663,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "ai-tool-wish-existed",
      "target": "context-conversation-ideas",
      "type": "shared_topic",
      "weight": 0.5275799086757991,
      "sharedTopics": [
        "tools",
        "creativity"
      ],
      "label": "Shared: tools, creativity"
    },
    {
      "source": "ai-tool-wish-existed",
      "target": "freeport-lightweight-port-management",
      "type": "shared_topic",
      "weight": 0.13999999999999999,
      "sharedTopics": [
        "tools"
      ],
      "label": "Shared: tools"
    },
    {
      "source": "ai-tool-wish-existed",
      "target": "global-vs-local-context-search",
      "type": "shared_topic",
      "weight": 0.4112328767123288,
      "sharedTopics": [
        "tools"
      ],
      "label": "Shared: tools"
    },
    {
      "source": "ai-tool-wish-existed",
      "target": "quick-thought",
      "type": "shared_topic",
      "weight": 0.4367123287671233,
      "sharedTopics": [
        "ai"
      ],
      "label": "Shared: ai"
    },
    {
      "source": "cheaper-code-more-experiments",
      "target": "exploring-primitives-agentic-coding-setup",
      "type": "shared_topic",
      "weight": 0.36273972602739724,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "cheaper-code-more-experiments",
      "target": "freeport-lightweight-port-management",
      "type": "shared_topic",
      "weight": 0.43965753424657533,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "conceptual-learning-anki-books",
      "target": "context-conversation-ideas",
      "type": "shared_topic",
      "weight": 0.5193607305936072,
      "sharedTopics": [
        "learning",
        "knowledge"
      ],
      "label": "Shared: learning, knowledge"
    },
    {
      "source": "context-conversation-ideas",
      "target": "freeport-lightweight-port-management",
      "type": "shared_topic",
      "weight": 0.11666666666666665,
      "sharedTopics": [
        "tools"
      ],
      "label": "Shared: tools"
    },
    {
      "source": "context-conversation-ideas",
      "target": "global-vs-local-context-search",
      "type": "shared_topic",
      "weight": 0.39365296803652966,
      "sharedTopics": [
        "tools"
      ],
      "label": "Shared: tools"
    },
    {
      "source": "exploring-primitives-agentic-coding-setup",
      "target": "freeport-lightweight-port-management",
      "type": "shared_topic",
      "weight": 0.39808219178082194,
      "sharedTopics": [
        "agents"
      ],
      "label": "Shared: agents"
    },
    {
      "source": "freeport-lightweight-port-management",
      "target": "global-vs-local-context-search",
      "type": "shared_topic",
      "weight": 0.13999999999999999,
      "sharedTopics": [
        "tools"
      ],
      "label": "Shared: tools"
    },
    {
      "source": "freeport-lightweight-port-management",
      "target": "mountain-to-climb",
      "type": "shared_topic",
      "weight": 0.43965753424657533,
      "sharedTopics": [
        "development"
      ],
      "label": "Shared: development"
    },
    {
      "source": "global-vs-local-context-search",
      "target": "quick-thought",
      "type": "shared_topic",
      "weight": 0.407945205479452,
      "sharedTopics": [
        "ux"
      ],
      "label": "Shared: ux"
    }
  ],
  "topics": {
    "agents": [
      "agent-friendly-architecture",
      "agentic-ai-anki-flashcard-creation",
      "cheaper-code-more-experiments",
      "exploring-primitives-agentic-coding-setup",
      "freeport-lightweight-port-management"
    ],
    "architecture": [
      "agent-friendly-architecture"
    ],
    "software-design": [
      "agent-friendly-architecture"
    ],
    "anki": [
      "agentic-ai-anki-flashcard-creation",
      "conceptual-learning-anki-books"
    ],
    "spaced-repetition": [
      "agentic-ai-anki-flashcard-creation",
      "conceptual-learning-anki-books"
    ],
    "learning": [
      "agentic-ai-anki-flashcard-creation",
      "conceptual-learning-anki-books",
      "context-conversation-ideas"
    ],
    "claude-code": [
      "agentic-ai-anki-flashcard-creation"
    ],
    "languages": [
      "agentic-ai-anki-flashcard-creation"
    ],
    "ai": [
      "ai-tool-wish-existed",
      "quick-thought"
    ],
    "tools": [
      "ai-tool-wish-existed",
      "context-conversation-ideas",
      "freeport-lightweight-port-management",
      "global-vs-local-context-search"
    ],
    "productivity": [
      "ai-tool-wish-existed"
    ],
    "knowledge-management": [
      "ai-tool-wish-existed"
    ],
    "creativity": [
      "ai-tool-wish-existed",
      "context-conversation-ideas"
    ],
    "workflow": [
      "cheaper-code-more-experiments"
    ],
    "experimentation": [
      "cheaper-code-more-experiments"
    ],
    "knowledge": [
      "conceptual-learning-anki-books",
      "context-conversation-ideas"
    ],
    "cognition": [
      "conceptual-learning-anki-books"
    ],
    "conversation": [
      "context-conversation-ideas"
    ],
    "ideas": [
      "context-conversation-ideas"
    ],
    "git": [
      "exploring-primitives-agentic-coding-setup"
    ],
    "infrastructure": [
      "exploring-primitives-agentic-coding-setup"
    ],
    "networking": [
      "exploring-primitives-agentic-coding-setup"
    ],
    "sqlite": [
      "exploring-primitives-agentic-coding-setup"
    ],
    "cli": [
      "freeport-lightweight-port-management"
    ],
    "development": [
      "freeport-lightweight-port-management",
      "mountain-to-climb"
    ],
    "search": [
      "global-vs-local-context-search"
    ],
    "context": [
      "global-vs-local-context-search"
    ],
    "information-retrieval": [
      "global-vs-local-context-search"
    ],
    "ux": [
      "global-vs-local-context-search",
      "quick-thought"
    ],
    "economics": [
      "mountain-to-climb"
    ],
    "visualisation": [
      "mountain-to-climb"
    ],
    "data": [
      "mountain-to-climb"
    ],
    "robotics": [
      "notes-on-robotics-untapped-potential"
    ],
    "automation": [
      "notes-on-robotics-untapped-potential"
    ],
    "drones": [
      "notes-on-robotics-untapped-potential"
    ],
    "future": [
      "notes-on-robotics-untapped-potential"
    ],
    "sports": [
      "notes-on-robotics-untapped-potential"
    ],
    "llms": [
      "notes-on-llm-clock-face-limitations"
    ],
    "generative-ai": [
      "notes-on-llm-clock-face-limitations"
    ],
    "failures": [
      "notes-on-llm-clock-face-limitations"
    ],
    "generalisation": [
      "notes-on-llm-clock-face-limitations"
    ],
    "thought": [
      "quick-thought"
    ],
    "communication": [
      "quick-thought"
    ]
  },
  "generatedAt": "2026-02-20T16:22:26.618Z",
  "version": 1,
  "stats": {
    "totalPosts": 13,
    "totalEdges": 22,
    "totalTopics": 43,
    "avgConnectionsPerPost": 3.4,
    "mostConnectedPost": "freeport-lightweight-port-management"
  }
}