What I work on
Projects
What actually runs on this VPS. Almost everything is behind a login – ask for a tester invite.
- EpistOS – Agentic book, knowledge and manuscript operating system.: Manuscript pipeline, Chapter graph, Citation tracking, Agentic editing, pgvector, htmx, Citations
- Vault – Content curation and knowledge management: hierarchical vaults, tags, cross-references, bookmark import. Experimental YouTube pipeline for transcription and AI analysis.: YouTube pipeline, Bookmark import, Cross-references, Obsidian, YouTube, Bookmarks, Notes
- GeoScan – Deterministic GEO/AEO website analyzer – how visible is a site to AI search engines, and why.: Deterministic scoring, AI visibility audit, Schema audit, Schema.org, Structured data
- music-tools – Database of music production tools. A research agent does web search, crawls and LLM extraction.: Research agent, Tool database, LLM extraction
- cookieconsent – Small, dependency-free consent banner with Google Consent Mode support.: Consent Mode, Zero dependencies, Vanilla JS
- vps-infrastructure – The plumbing: Docker, Traefik, networks, certificates, backups. Kept separate from the apps.: Traefik config, Compose stacks, Backups, Let's Encrypt, Subdomains
- Videntum – Videntum Intelligence: AI-driven detection of content gaps and market trends by correlating search demand with video supply across YouTube, Google Trends, Reddit and more.: Trend scoring, Gap detection, Niche clustering, Trend radar, YouTube, APIs, LLM extraction, Structured output
- SkillUp – A global, multilingual education index: online courses, providers, prices, certificates and topics – built SEO-first, user-first in public, provider-financed underneath.: Course index, SEO data index, Provider claiming, Learning paths, Technical SEO, hreflang, i18n, Structured data
- OSINT – OSINT as a focused SaaS: monitoring changes at companies and suppliers from open or licensed sources, with every claim traced to a checkable source and uncertain matches kept visible.: Company registers, Change dossier, Source provenance, Entity matching, Entity extraction, Grounding, Citations, Structured extraction, APIs
- domain-suite-mcp – Open-source MCP server that lets AI agents manage domains and DNS end to end: check, register, configure DNS, provision SSL, set up email. Published on npm.: Registrar APIs, DNS automation, RDAP / WHOIS, SSL provisioning, MCP server, TypeScript, DNS, Cloudflare, Skills, Claude Code
- bitwalker.cloud – This page. Vite, TypeScript, Three.js, a tiny force layout and no framework.: Force graph, Landing page, Three.js, Vite, TypeScript
LLMs
Working with frontier and open-weight models: prompting, structured output, long context, multimodal input.
- Frontier models: Claude, GPT, Gemini, Mistral
- Open weights: Llama, Qwen, DeepSeek, Gemma, Phi
- Prompting: System prompts, Few-shot, Chain-of-thought, Structured output, Prompt caching
- Context: Context window, Context engineering
- Multimodal: Vision, Whisper, TTS, Image generation
- Reasoning: Extended thinking, Test-time compute
Agentic Systems
Tool-using agents, planner/executor loops, multi-agent orchestration – and the guardrails that keep them useful.
- Agent patterns: Planner / Executor, Reflection, Tool use, Multi-agent, Orchestrator / Worker
- MCP: MCP server, MCP client, Tool schemas, A2A, Claude Code, Tool use, Apify, Firecrawl
- Coding agents: Claude Code, Codex, Cursor, Skills, Hooks, Subagents
- Guardrails: Human-in-the-loop, Permission modes, Sandboxing, Prompt injection
- Workflows: Task graphs, State machines, LangGraph, Cron agents
- Agent memory: Episodic, Semantic, Memory files
- Computer use: Browser automation, Playwright, DOM actions
RAG & Knowledge
Retrieval-augmented generation in all its flavours, and the knowledge structures underneath: graphs, wikis, notes.
- Retrieval: HybridRAG, GraphRAG, Agentic RAG, Corrective RAG, RAG-Fusion
- Indexing: Chunking, Semantic chunking, Late chunking, Contextual retrieval, Parent-child chunks
- Search: Vector search, BM25, Hybrid search, Reranking, Query rewriting, HyDE
- Embeddings: Embedding models, Dimensionality, Matryoshka, Multilingual
- Vector stores: pgvector, Qdrant, Weaviate, Chroma, FAISS, LanceDB
- Knowledge Graph: Entity extraction, Relation extraction, Ontology, Neo4j, Cypher, Community detection
- LLM Wiki: Obsidian, Notes, Markdown, Second brain, Digital garden
- Documents: PDF parsing, OCR, Docling, Citations, Grounding
Data & Crawling
Getting data in: crawling, scraping, extraction, transcription. The unglamorous half of every AI project.
- Crawling: Apify, Firecrawl, Crawl4AI, Puppeteer, Scrapy
- Extraction: LLM extraction, Structured extraction, Readability, Schema inference
- Pipelines: ETL, Queues, Batch jobs, Dedupe, Data quality
- Sources: YouTube, RSS, APIs, Bookmarks
- Transcription: Diarisation, Timestamps, Subtitles
Evals
Measuring what actually changed: LLM-as-judge, golden sets, regression suites, tracing.
- Evaluation: LLM-as-judge, Golden sets, Regression suites, Rubrics, Pairwise
- Metrics: Faithfulness, Answer relevance, Recall@k, Cost per task
- Tracing: Langfuse, OpenTelemetry, Prompt versioning
- Datasets: Synthetic data, Labeling, Red teaming
Training & Inference
Fine-tuning small open models and serving them on modest hardware.
- Fine-tuning: LoRA, QLoRA, SFT, DPO, Distillation, Dataset curation
- Local inference: vLLM, llama.cpp, Ollama, SGLang
- Quantisation: GGUF, AWQ, GPTQ, KV cache
- Hardware: GPU, VRAM, CUDA, Apple Silicon
- Serving: Batching, Streaming, SSE
Backend
PHP first, Node and Python where they fit. APIs, auth, boring architecture that survives contact with users.
- PHP: PHP 8.x, Composer, Laravel, Symfony, PHPUnit, FrankenPHP
- Node.js: Bun, Express, Fastify, Hono, tRPC, Next.js
- Python: FastAPI, Pydantic, asyncio, uv
- Auth: OAuth2, OIDC, JWT, Passkeys, Basic Auth
- Patterns: Clean architecture, Hexagonal, CQRS, Event sourcing, DDD
Databases
PostgreSQL by default, MySQL when the stack demands it, Redis in between.
- PostgreSQL: JSONB, Full-text search, Row-level security, Partitioning, EXPLAIN, PostGIS
- MySQL: MariaDB, InnoDB, Replication
- Redis: Valkey, Caching, Pub/Sub, BullMQ, Queues
- Search engines: Meilisearch, Typesense, Elasticsearch
- Storage: S3, MinIO, SQLite, Migrations
Frontend
From htmx to React – the right amount of JavaScript, and occasionally a lot of WebGL.
- React: Next.js, Remix, Server components, react-three-fiber, shadcn/ui
- Vue: Nuxt, Pinia, Vite
- More frameworks: Svelte, SvelteKit, Astro, SolidJS, Angular, Qwik
- Lightweight: htmx, Alpine.js, Vanilla JS, Web Components, Lit
- Styling: Tailwind, CSS variables, Container queries, View Transitions
- Build: TypeScript, esbuild, pnpm, Monorepo
- 3D & Graphics: Three.js, WebGL, WebGPU, GLSL, Shaders, D3, Canvas
- Motion: GSAP, Framer Motion, Scroll-driven animations
Web & SEO
Technical SEO, Core Web Vitals – and the new game: being cited by AI search engines.
- SEO: Technical SEO, Structured data, Schema.org, Canonical, hreflang, Crawl budget
- GEO / AEO: AI Overviews, llms.txt, Entity SEO, AI citations
- Performance: Core Web Vitals, LCP, INP, CDN, Edge, Image optimisation
- Content: Static sites, Headless CMS, i18n, Open Graph
Infrastructure
One VPS, many containers. Traefik in front, everything else behind it.
- Docker: Docker Compose, Multi-stage builds, Docker networks, Health checks
- Traefik: Reverse proxy, Let's Encrypt, Wildcard certs, Middlewares
- LAMP stack: Apache, PHP-FPM, nginx, Caddy
- Scaling: Load balancing, Horizontal scaling, Blue / green, Zero-downtime deploy
- CI/CD: GitHub Actions, Semantic versioning, Conventional commits
- Observability: Logs, Uptime, Grafana, Prometheus, Loki
- Security: Firewall, fail2ban, SSH keys, Secrets, Rate limiting, 3-2-1 backups
- Networking: DNS, Subdomains, Cloudflare, Tailscale, WireGuard
Tooling
Editors, automation, docs – the workflow around the code.
- Editors: VS Code, Terminal, tmux, Git worktrees
- Git: GitHub, Branching, PR reviews
- Automation: n8n, Cron, Scheduled agents
- Docs: README, ADRs, Runbooks, CLAUDE.md, Mermaid
- Testing: Unit, Integration, E2E, Snapshot