[
  {
    "title": "Spidey & Armie",
    "description": "3d twin that steers a real robot",
    "details": [
      "My team of four built a live 3D model of a robot table at Hack the North 2026, and clicking anywhere in it sends a real four-legged robot walking to that spot.",
      "If obstacles block every path, a robot arm picks the robot up and carries it over them.",
      "I worked on tracking and navigation: a C++ camera tracker running on a QNX Raspberry Pi, object detection with MobileSAM, and path planning."
    ],
    "github": "https://github.com/aicheye/HTN26",
    "media": "/assets/demos/spidey-armie.mp4",
    "technologies": ["C++", "TypeScript", "OpenCV"],
    "printOrder": 1
  },
  {
    "title": "swarm_ws",
    "description": "robotic swarm maze exploration",
    "details": [
      "Four robots explore procedurally generated mazes together without a central coordinator, and they finish 7.5x faster than a single robot.",
      "A geodesic Voronoi partition of the shared map gives each robot the area it can reach fastest, so they don't all go after the same unexplored corner.",
      "It's four ROS 2 packages with a state machine per robot, running across seven Docker services, simulated in Gazebo and visualized live in Foxglove."
    ],
    "github": "https://github.com/RRohan4/swarm_ws",
    "media": "/assets/demos/swarm_ws.mp4",
    "technologies": ["Python", "ROS 2", "Docker"],
    "printOrder": 7
  },
  {
    "title": "CRusTTY",
    "description": "tui c interpreter from scratch",
    "details": [
      "A C interpreter and debugger written from scratch in Rust, with a hand-written recursive-descent parser and a terminal UI that shows the stack and heap while a program runs.",
      "It saves a snapshot after every statement, so you can step backward through a program as well as forward.",
      "It's open source with over 50 stars, and GitHub Actions runs the tests, builds, and releases."
    ],
    "github": "https://github.com/aicheye/crustty",
    "media": "/assets/demos/crustty.mp4",
    "technologies": ["Rust", "C"]
  },
  {
    "title": "Wunder RNN Challenge",
    "description": "top 5% market prediction model",
    "details": [
      "A Transformer model in PyTorch for the Wunderlab ML Challenge that predicts the next step of noisy financial sequences 1000 steps long.",
      "Using sinusoidal and learnable positional encodings together picked up long-range patterns better than either one did alone.",
      "It scored a mean R² of 0.396 against an average of 0.309, which put it in the top 5% of more than 3000 entrants."
    ],
    "github": "https://github.com/aicheye/wundernn",
    "media": "/assets/demos/wundernn.webp",
    "technologies": ["Python", "ML", "Jupyter"],
    "printOrder": 8
  },
  {
    "title": "aicheye's Combat Tagging",
    "description": "minecraft mod w/ 1k+ downloads",
    "details": [
      "A Fabric server mod that stops players from logging out to escape a fight.",
      "Tagged players can't use ender pearls, god apples, or elytra, and anyone who disconnects anyway comes back with less health and absorption.",
      "A boss bar shows how long the tag lasts and tagged players get a red nametag, and every rule can be changed in the config."
    ],
    "github": "https://github.com/aicheye/combat-tag",
    "media": "/assets/demos/combat-tag.webp",
    "technologies": ["Java", "Gradle"]
  },
  {
    "title": "Bucket",
    "description": "intuitive student dashboard",
    "details": [
      "A dashboard for Waterloo students to track their courses and grades, which imports course outlines and marks directly from D2L.",
      "All the data is stored in the browser with IndexedDB, so there's no account to make and no database on a server.",
      "The server only parses the HTML and PDFs during an import."
    ],
    "github": "https://github.com/aicheye/bucket",
    "media": "/assets/demos/bucket.webp",
    "technologies": ["TypeScript", "React", "GraphQL"]
  },
  {
    "title": "ezp2p Arcade",
    "description": "p2p serverless minigames",
    "details": [
      "Multiplayer browser games that run without a game server.",
      "Players connect directly over WebRTC DataChannels and swap offers, answers, and ICE candidates through a lobby code, so there's no lobby database either.",
      "Each player's moves apply locally right away and get sent to the other player with sequence numbers, so both games stay in the same state."
    ],
    "github": "https://github.com/aicheye/ezp2p",
    "media": "/assets/demos/ezp2p.webp",
    "technologies": ["TypeScript", "Vite", "WebRTC"]
  }
]
