[
  {
    "title": "Member of Technical Staff Intern",
    "company": "Medra",
    "description": "incoming: robotics for autonomous biology labs",
    "details": [
      "Incoming Member of Technical Staff intern for Winter 2027, working on robots that run biology experiments from start to finish so scientists spend less time pipetting."
    ],
    "website": "https://medra.ai",
    "logo": "/assets/logos/medra.png",
    "location": "San Francisco, CA",
    "technologies": [],
    "dates": ["2027.1", "2027.4"],
    "current": false
  },
  {
    "title": "Research Assistant",
    "company": "UWaterloo",
    "description": "distributed coordination for mobile robot networks",
    "details": [
      "Research assistant at CAMS-Lab in Waterloo's Mechanical and Mechatronics Engineering department, working on distributed coordination for mobile robots."
    ],
    "website": "https://uwaterloo.ca/cooperative-adaptive-mechatronic-systems-lab/",
    "logo": "/assets/logos/uwaterloo.webp",
    "location": "Waterloo, ON",
    "technologies": ["ROS 2", "C++", "Python"],
    "dates": ["2026.9", "Present"],
    "current": true
  },
  {
    "title": "Robotics SWE",
    "company": "WATonomous",
    "description": "humanoid rl and autonomous vehicle prediction",
    "details": [
      "Training humanoid robots to play badminton, which means tracking the shuttle and committing to a swing in under a second.",
      "Before that, I wrote concurrent C++/ROS 2 prediction software for EVE, Waterloo's student-built autonomous car, which cut safety incidents by 3x."
    ],
    "website": "https://watonomous.ca",
    "logo": "/assets/logos/watonomous.jpg",
    "media": "/assets/demos/watonomous-humanoid.mp4",
    "pages": [
      {
        "media": "/assets/demos/watonomous-humanoid.mp4",
        "caption": "Badminton Receive Policy",
        "text": [
          "Built the badminton receive environment in mjlab on MuJoCo Warp, with shuttle aerodynamics, EKF shuttle tracking, and the same arm URDF the real hardware uses.",
          "Trained a PPO teacher on privileged state, distilled it into a student that only sees noisy perception, and fine-tuned the student with an asymmetric actor-critic.",
          "That raised the hit rate from 76.6% to 98.8% of serves, with 78% returned over the net."
        ],
        "printOrder": 2
      },
      {
        "media": "/assets/demos/watonomous.mp4",
        "caption": "EVE Prediction Pipelines",
        "text": [
          "Wrote concurrent C++/ROS 2 software for perception and planning on EVE, the autonomous car built by Waterloo's student design team.",
          "Fast-inference models predicting what other road users will do cut safety incidents by 3x.",
          "Also connected those models to the perception, world modelling, planning, and action nodes, and maintained the Docker environments so the stack builds the same way everywhere."
        ],
        "printOrder": 6
      }
    ],
    "location": "Waterloo, ON",
    "technologies": ["Python", "PyTorch", "mjlab", "C++", "ROS 2"],
    "dates": ["2025.9", "Present"],
    "current": true
  },
  {
    "title": "Perception Engineering Intern",
    "company": "moss",
    "description": "autonomy, cv pipelines, and reliability for agbots",
    "details": [
      "Built a C++/ROS 2 autonomy stack for agricultural rovers end to end, covering sensor integration, planning, and control on two robot platforms.",
      "Fusing RTK with odometry and syncing sensors to the microsecond for real-time SLAM kept the mean follow error under 20cm across 500m of autonomous testing.",
      "Also wrote a Rust pipeline that generates synthetic point clouds at over 4M points per second for training computer vision models."
    ],
    "website": "https://moss.ag",
    "logo": "/assets/logos/moss.webp",
    "media": "/assets/demos/moss-autonomy.mp4",
    "pages": [
      {
        "media": "/assets/demos/moss-autonomy.mp4",
        "caption": "Autonomous Row Following",
        "text": [
          "Built a C++/ROS 2 autonomy stack for agricultural rovers end to end, covering sensor integration, planning, and control on two robot platforms.",
          "Fusing RTK with odometry and syncing sensors to the microsecond for real-time SLAM kept the mean follow error under 20cm across 500m of autonomous testing."
        ],
        "printOrder": 3
      },
      {
        "media": "/assets/demos/moss-synthetic.webp",
        "caption": "Synthetic Pointcloud Pipeline",
        "text": [
          "Only about 50K of 3M real orchard LiDAR scans were labelled, so I wrote a Rust generator to make labelled training data instead.",
          "It grows procedural apple trees through a PyO3 bridge to The Grove, plants them in rows on shaped terrain with trellises and ground cover, and simulates LiDAR returns at over 4M points per second.",
          "Every point is labelled as tree, trunk, or background with an instance ID, and each generated block comes with a streaming COPC viewer."
        ],
        "printOrder": 4
      },
      {
        "caption": "Reliability",
        "text": [
          "Wrote Ansible playbooks and flashing scripts that take NVIDIA Jetsons from factory-new to ready for the field.",
          "Helped build the OTA system that updates the whole fleet at once from a pinned release.",
          "Also built a hardware test harness that checks each kit, including sensor bringup, recording a full mission, and handling sensor dropouts."
        ]
      }
    ],
    "location": "San Francisco, CA",
    "technologies": ["ROS 2", "Rust", "C++", "Linux"],
    "dates": ["2026.5", "2026.8"],
    "current": false
  }
]
