Small things,
running right here.
Five interactive AI demos, all running entirely in your browser. No API keys, no backend calls — these are tiny implementations of ideas I find interesting. View source to see how each one works.
chat playground
interactiveA tiny chatbot whose answers come from a pattern-matched dictionary I wrote by hand — not a real LLM. Ask about RAG, evals, transformers, or my background. Streamed word-by-word to feel like the real thing.
tokenizer visualizer
interactiveA simplified BPE-style tokenizer that splits text into subword pieces. Watch the chunk count change as you type. Real tokenizers are more sophisticated; this is the idea at its smallest.
embedding space
interactiveA toy projection of word embeddings into 2D — similar words cluster together. Hover any point to see the word. Real embeddings live in 768+ dimensions; this is what happens after dimensionality reduction tells you which words live near each other.
vector search over this site
interactiveA working in-browser RAG retriever. TF-IDF over a hand-built corpus of 12 documents — projects, essays, pages — ranked by cosine similarity. Same machinery that powers production search, just at toy scale. Hit it with any query about my work.
attention pattern visualizer
interactiveMulti-head self-attention, demystified. Each "head" learns to look at different things — the token before you, the subject of a sentence, the whole context. Pick a head, hover a token, see what it attends to. Patterns are hand-crafted to be plausible, not real model weights.
Hover any token to see which earlier tokens it attends to under the current head.
Why this page exists
Most portfolio sites end at the projects page. I wanted somewhere I could put small, working things — proof that I actually use the ideas I list on my CV, not just collect them. Each demo here is a few hundred lines of vanilla JavaScript, no frameworks, no external calls. View source.
These are intentionally tiny. The chat replies from a hand-written dictionary, the tokenizer is BPE-flavoured rather than BPE-proper, and the embeddings are hand-positioned. The point isn't to ship production AI in a static site — it's to show you that I understand what the moving parts are, well enough to fit each one into a single page.
More demos are on the way: a tiny attention-pattern visualizer, an interactive prompt diff tool, a "next-token probability" toy. If there's something you'd like to see, tell me.