Dan's Town

Town map

An interactive pixel-art town. Use the arrow keys or W A S D to walk, Enter to interact, or click or tap where you want to go. Every place is also listed in the Map menu and under "Where to?".

โ† Town

APPC Archive Assistant

May 2026

A RAG system that searches and synthesizes decades of university academic-policy minutes.

  • RAG
  • LLMs
  • Django
  • React

TwinMind Copilot

Feb 2026

A live meeting assistant that transcribes speech in real time and suggests what to ask next.

  • LLMs
  • React
  • Django
  • Groq

Saint Petersburg AI Agent

Dec 2025

A 1st-place tournament agent combining Monte-Carlo Tree Search with learned evaluators.

  • MCTS
  • Machine Learning
  • Java
  • scikit-learn

Research & more

Live from the terminal

๐Ÿ™ GitHub activity

Loading activityโ€ฆ

๐Ÿงฉ LeetCode

Loadingโ€ฆ

Toolbox

Languages & Frameworks

  • Python
  • Java
  • TypeScript
  • JavaScript
  • SQL
  • Elixir
  • Go
  • HTML/CSS
  • PHP
  • Phoenix LiveView
  • Django
  • React
  • Next.js
  • Bootstrap
  • scikit-learn

AI / ML

  • RAG
  • GraphRAG
  • LLM Fine-Tuning
  • Prompt Engineering
  • LLM Evals (LLM-as-a-judge)
  • LangChain
  • LangGraph
  • LlamaIndex
  • Pydantic
  • AWS Bedrock

Data

  • PostgreSQL
  • Supabase
  • pgvector
  • MySQL
  • Neo4j
  • Databricks
  • Delta Lake
  • pandas
  • NumPy
  • Matplotlib
  • Excel

Tools & Cloud

  • Git
  • Docker
  • AWS
  • Azure DevOps
  • Jenkins
  • GitHub Actions
  • CI/CD
  • Stripe API
  • Groq API
  • Jupyter
  • Vercel
  • Fly.io
  • Render
  • Claude Code
  • Codex

How this town is built

  • Single source of truth. Everything here is compiled from one private, schema-validated profile.yaml. Pushing to it rebuilds the site and the twin's knowledge. Entries can be public, twin-only, or private.
  • Static first. Astro renders every page to HTML at build time. JavaScript only loads for the town canvas, the chat, and the Arcade.
  • A tiny engine, no game framework. Grid movement, collision, and BFS tap-to-move in a few hundred lines of TypeScript. The render loop sleeps when you stand still, so an idle tab uses no CPU.
  • Rust โ†’ WebAssembly. My Java Mancala bot was ported to Rust (~37 KB of WASM, running in a Web Worker). A parity test suite proves it picks the same move as the original Java on 247 recorded positions.
  • Edge API. A Cloudflare Worker serves the site, refreshes GitHub / LeetCode / Spotify stats once a day into KV, and proxies the digital twin with rate limiting. Secrets never reach the browser.

Hosting cost: $0 on Cloudflare's free tier.

๐Ÿ—บ๏ธ Town map

Jump straight to a place. No walking needed.

Around town

Welcome to my little world!

Hi, I'm Dan ๐Ÿ‘‹ This town is my portfolio. Each building holds a different part of my story.