Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

hematteo.github.io

An interactive 3D physics junk drawer โ€” my CV, dumped onto a workshop cutting mat as objects you can grab, throw, stack, and knock around. Click any object to read the story behind it.

Live: https://hematteo.github.io

The junk drawer

The idea

Websites aren't supposed to have weight. This one does. Instead of a scrolling list of bullet points, ten accomplishments are real rigid bodies in a tray with real physics โ€” pick them up, throw them at the walls, tip the coffee mug and watch it spill. Read all ten and the drawer tells you you're done.

Each object maps to something real:

Object Stands for
๐Ÿ›ถ Punt MPhil, University of Cambridge
โœˆ๏ธ Paper airplane Learning to Read Out (paper)
๐Ÿ”บ Glass prism Sparse Readout Prism (paper)
๐Ÿ•น๏ธ Joystick Low-bit RL policies (paper)
โ˜• Coffee mug Solo-built LLM platform, ~3K MAU (it spills)
โŒจ๏ธ Keyboard Amazon Alexa-AI internship
๐Ÿ–ฅ๏ธ GPU vigil-gpu, open-source training monitor
๐Ÿฌ Dolphin Dolphin-acoustics ML (F1 0.48 โ†’ 0.86)
๐Ÿ† Trophy Hackathon wins
๐Ÿฅ‡ Medal Top Student Medal, GRE 340/340

Built with

  • three.js โ€” WebGL rendering, all objects modelled in code (no asset files)
  • cannon-es โ€” rigid-body physics
  • Vite โ€” build and dev server
  • Web Audio API โ€” every clonk, chirp, and fanfare is synthesised at runtime; no audio files
  • No external requests at runtime โ€” fonts are system stacks, textures are drawn on <canvas>

Features

  • Grab / throw / stack physics with material-accurate collision sounds
  • Coffee that spills and stains the mat when the mug tips
  • Idle life: the paper airplane glides, the dolphin flops, the prism casts a rainbow
  • Completion funnel: read all ten โ†’ confetti + a call to action
  • Mobile: tilt-to-slide gravity (device orientation) and bottom-sheet cards
  • Keyboard navigable, screen-reader announcements, respects prefers-reduced-motion
  • Light/dark themes; renderer sleeps when the scene is at rest to save battery

Develop

npm install
npm run dev        # local dev server
npm run build      # production build to dist/
npm run preview    # serve the built site
npm test           # full 17-check Playwright interaction suite
npm run smoke      # fast headless smoke test (used in CI)

Requires Node 18+. The full suite (npm test) uses your installed Chrome; CI uses Playwright's bundled Chromium.

Deploy

Pushing to main builds and deploys to GitHub Pages via .github/workflows/deploy.yml. .github/workflows/ci.yml runs the smoke test on every push and PR.

License

MIT ยฉ Matteo He

About

๐Ÿ—„๏ธ Interactive 3D physics junk drawer โ€” my CV as objects you can grab, throw, and read.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages