Skip to content

hematteo/hematteo.github.io

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

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors