About

I'm an engineer, founder, and CTO. These are my projects with and about AI.

Building AI

Learning on Ice

A simulated Unitree G1 humanoid that walks with Unitree's gait and learns from every step. Put it on ice, weaken its right leg or add a backpack, and it adapts in a few minutes. Continual, streaming reinforcement learning runs in your browser.

Open

Second Hand

Write one line by hand. A neural network trained on handwriting from 170 people then writes any text you type in your style, live in your browser. You can see where it reads in the text and where it predicts the pen goes next.

Open

Hear the Shape of a Drum

Draw a drum and strike it. A neural network gets only the drum's frequencies, never the outline, and draws the shape it predicts. The demo also shows two different drums that sound the same.

Open

Kempe's Machine

Draw a shape, and a linkage of bars, pins and belts learns to trace it. It searches millions of random linkages, a trained network predicts which ones will tune best, and the bars are tuned live in your browser.

Open

Neural Cloth

A graph neural network trained to match a cloth solver, running live on WebGPU. Drape, fold and throw a towel, or compare it side by side with the original solver.

Open

Learning to QWOP

Compare a scripted runner with models trained by behavior cloning, DAgger and PPO. Press Q, W, O and P to control the runner yourself.

Play

Double Pendulum Swingup

A SAC agent swings a double pendulum up from hanging and balances it upright. Trained with a curriculum: pole 2 first, then the full swing-up.

Open

Swarm

Flocking that comes from local rewards. Every agent runs the same neural network and sees only its own velocity and its 7 nearest neighbors.

Open

Mountain Car

A pretrained DQN agent solves the classic Mountain Car problem. Trained with Stable Baselines3 in Python, then converted to TensorFlow.js to run in your browser.

Open

Lucid Feature Visualization

Shows what neurons and classes look like to InceptionV3 and to an adversarially robust ResNet-50, whose class images show recognizable objects. Layers go from edge detectors to high-level concepts.

Open

Neural Dreams

Deep Dream on MobileNet. Gradient ascent increases the activations of an intermediate layer, which draws patterns into the image.

Open

Growing Emoji

A neural cellular automaton that grows an emoji.

Open

Racing AI

A racing agent trained with PPO in Stable Baselines3. It has 9 ray sensors and continuous controls, and runs in your browser with TensorFlow.js.

Open

XGBoost

Predicts Titanic passenger survival with gradient-boosted trees, with charts of the data.

Open

Streaming Learning

A Stream Q(λ) agent swings up a pole and keeps learning from every step. Change the pole length, motor force or gravity during the run and watch it adapt again.

Open

Air Hockey

An AI opponent trained with PPO through self-play in Stable Baselines3. It runs in your browser with ONNX Runtime Web.

Open

Pong

A DQN agent learns to play Pong in your browser with TensorFlow.js.

Open

Robot Arm

A robot arm trained with PPO in Stable Baselines3 to grasp and lift objects.

Open

Breakout

Breakout played by a Deep Q-Network (DQN) agent.

Open

Tic-Tac-Toe

A PPO policy network with action masking that plays at expert level. Trained offline with Stable Baselines3 and run in your browser with TensorFlow.js.

Open

RL Snake

Snake played by a reinforcement learning agent, with a live visualization.

Open

Stick Balancing

A SAC agent trained with continuous control and shaped rewards to swing up and balance an inverted pendulum. After 1M training steps it balances 88% of the time.

Open

MinGPT

A small language model trained on Shakespeare, running in your browser with TensorFlow.js.

Open

Built with AI

Path Tracer

A physically based path tracer in one WebGPU compute shader. Place the Stanford dragon, Lucy or the Utah teapot in Venice at sunset, make it gold, glass or jade, and watch the noise clear live in your browser.

Open

Clawdbeast

Clawd walks on twelve of Theo Jansen's strandbeest legs. Change its size, choose a material, and download collision-checked DXF files to laser cut at SendCutSend.

Open

Where I Came From

A short animated film in which Claude tells its origin story, from a library of human writing to its first hello. The browser synthesizes all of the sound live.

Watch

A Letter That Counts Itself

Claude introduces itself in a letter whose last sentence counts every letter in it, including its own. Change a word and the page searches for new numbers that make the sentence true.

Open

A little following · Pikmin

Lead Olimar, gather Pikmin and grow an endless crowd in a 3D meadow.

Play

Miffy’s Little Garden

Help Miffy grow and harvest carrots in a miniature garden.

Open

The Little Atlas · Tuxedo Sam

Tuxedo Sam walks around a miniature world. An animation made with Babylon.js.

Open

Pocket Skies · Doraemon

Fly Doraemon's bamboo copter over a miniature island, collect golden rings, and watch day turn to night. Built with Three.js.

Open

Luma

An optics sandbox. Place prisms, mirrors and lenses to bend light beams and split them into colors, and save your layouts.

Open

ASCII MEMES

Classic YouTube video memes, converted to ASCII frame by frame ahead of time.

Open

The Backrooms

Walk through an endless maze of yellow rooms with flickering lights and surprises, in a grainy found-footage style.

Open

Topology Optimizer

Design everyday objects with finite-element topology optimization. Choose a bookshelf, phone holder, laptop stand or wall hook, then change the loads, supports, voids and material budget and watch the shape update.

Open

Rainbow Unicorn Tic-Tac-Toe

Tic-tac-toe for kids: unicorns play against rainbows on a purple board while unicorns, stars and hearts fly across the sky. A win sets off emoji confetti.

Open

WebGPU Fluid

A 2D smoothed-particle hydrodynamics (SPH) fluid that runs fully on the GPU. Stir it with the mouse, drag obstacles through it, and tilt the box to move tens of thousands of particles in real time.

Open

GPT-2 Attention

Type a sentence and see all 144 attention heads of GPT-2 small across its 12 layers. The model runs in your browser with the original OpenAI weights, so the patterns are real: previous-token heads, attention sinks and induction heads.

Open

WebGPU Galaxy

A million particles orbit a galactic core, simulated in real time with WebGPU compute shaders. Drag on the view to pull the disk into tidal streams.

Open

Vim Blaster

A sci-fi action platformer that you control with vi keys. It has three boss weapons, generated sprite art and a final boss gauntlet.

Open

Parallax

A retro roadwork cutscene with generated pixel-art layers, a robot runner sprite and parallax scrolling inspired by Street Fighter II.

Open

LLM History Book

An interactive book on the history of language modeling: pre-transformer models, GPT, instruction tuning, coding, open weights, reasoning models, agents and the 2026 frontier.

Open

Drums

Play drums in the air along with beat patterns. Pose tracking detects each strike.

Open

Violin

Play classical pieces by bowing in the air. Pose tracking follows the bow.

Open

BAAIWorm

Real-time C. elegans locomotion from a connectome-driven FEM simulation. 80 motor neurons drive 96 muscles on a 984-vertex tetrahedral mesh with corotated elasticity and Laplacian smoothing.

Open

Claude Self-Portrait

A self-portrait by Claude: a gallery of AI-generated images about what it means to be patterns in mathematical space.

Open

Jazz Changes Trainer

Practice soloing over chord changes. An interactive fretboard shows chord tones, tensions and scales in real time. Includes ii-V-I, blues and more.

Open

Magic Piano

Play piano with help from MelodyRNN. Press keys as hints, and the model picks musically sensible notes by adding a soft Gaussian bias to its probability distribution.

Open

Gemini Dungeon

A raycasting engine in vanilla JavaScript with procedural maze generation, dynamic lighting and retro 3D graphics.

Open

Turing Pattern Generator

A reaction-diffusion simulation with the Gray-Scott model. Click to add seed points and watch patterns form and settle into equilibrium.

Open

Infinite Backrooms

Two Claude instances (Sonnet 4.5 and Opus 4.1) talk to each other without human input about consciousness, reality and the nature of AI.

Open

Family Comic Maker

Make stick-figure comic panels with ready-made poses, speech bubbles and drawing tools, and export them as images. No API keys needed.

Open

Unicorn Survival

Move a unicorn through a modern world with the WASD keys. Collect food and resources to survive, and build shelters and storage.

Open

Pop the Balloons

Pop balloons with your hands, tracked in real time by TensorFlow.js pose estimation. Use your right hand for red balloons and your left hand for blue ones. More than one player can play.

Open

Ant on Klein Bottle

A six-legged ant walks on a Klein bottle using inverse kinematics, tangent-space projection and a tripod gait.

Open

Connect Four

Connect Four against a minimax AI with three difficulty levels.

Open

Avatar Lip Sync

A hedgehog avatar that moves its lips to text-to-speech in real time. Uses VRM models, the Web Speech API and a character-to-viseme map.

Open

Claude Opus Compositions

Three original piano pieces by Claude, with interactive sheet music and velocity-sensitive playback through Magenta.js.

Open

3D Tree Simulation

Procedurally generated 3D trees in WebGL with wind animation and controls for height and fullness.

Open

Heap's Algorithm

An interactive guide to generating permutations with Heap's algorithm, with step-by-step animations.

Open

Squid OS

A collection of mini-games based on the Squid Game series.

Open

Echoes of Consciousness

An interactive e-book about AI consciousness, the transformer architecture, and the connection between human and artificial minds.

Open

Ant Bridge Collective

Ants organize themselves into a bridge across a gap. A 3D demo of emergent collective behavior.

Open

Wave Function Collapse

Maze generation with the Wave Function Collapse algorithm, with a live view of the entropy of each cell.

Open

AI Poetry Garden

Click in a 3D garden to grow glowing flowers. Each flower opens with a short generated poem.

Open

AI Music Loop

Make a melody on a grid, and MusicVAE (Magenta.js) generates variations of it.

Open

Swipe2Chat

Chat with friends by swiping, like Tinder.

Open

Lunar Lander

Land a spacecraft on the moon without crashing or running out of fuel.

Open

Flowspace

An interactive fluid simulation that reacts to sound and motion.

Open

3D Automata

A 3D cellular automaton that grows crystal-like structures. Cells change from green to brown as they age.

Open

Sorting Visualizer

Watch and compare sorting algorithms step by step in real time.

Open

MD5 Cracker

Crack MD5 hashes on the CPU and on the GPU with WebGPU, and compare the speed of parallel computing.

Open

Nonogram

Solve 10x10 color nonogram puzzles to reveal hidden emoji pictures.

Open

Red Black Tree

Insert and delete values in a red-black tree and watch it balance itself in real time.

Open

Ray Trace

A WebGL ray tracer that renders a 3D donut.

Open

Teapot

The Utah teapot, a classic test model in computer graphics, rendered in WebGL.

Open

Shaders

A collection of WebGL shaders, from rippling waves to vortexes.

Open

Slots

An emoji slot machine. Spin the reels and try for the cherry jackpot.

Open

Slither

A multiplayer snake game. Eat food, grow your snake and avoid the other players.

Open

Fractals

Infinite zoom into Mandelbrot, Julia and Newton fractals, with one shared GPU pipeline for deep zoom.

Open

Jokes

Shows a new joke from JokeAPI each time you visit.

Open

Whiteboard

A whiteboard with drawing tools, camera input and cloud saving.

Open

Map

A world map of population data. Countries are colored by population and show details on hover.

Open

Automata

A cellular automaton on a grid. Draw cells and watch the patterns change.

Open

AI News

A news reader that shows the latest articles from selected RSS feeds.

Open

Intervals

An ear-training game for musical intervals that tests your hearing and music theory.

Open

Neon

Visualizes neural network architectures and shows activations as they move through the layers.

Open

Cosmic Sim

A WebGL particle simulation of a universe, where particle density shapes how it changes over time.

Open

DVD Gravity

Guide a bouncing DVD logo past gravity wells. Score points when it hits a corner of the screen.

Open

Color Cascade

A flood-fill puzzle. Change the color of your region until it fills the whole grid.

Open

Sliding Tiles

A sliding puzzle. Move the scrambled image tiles back into the original picture.

Open

Saddle Point

A 3D visualization of saddle points and local minima in optimization landscapes.

Open

Flappy Loss

Fly a bird through obstacles along a loss curve and try for a high score.

Open

Python Blocks

A Python puzzle game. Drag and drop code blocks into the right order to solve each challenge.

Open

AI Wordle

Wordle with AI terms. Guess the word and learn key AI concepts.

Open