I build hardware-software systems that turn real-world signals into useful feedback.

A systems lab notebook for projects at the edge of code, circuits, robotics, and community service - designed for the messy path between raw data and reliable behavior.

Focused on hardware/software systems, embedded tooling, robotics, and feedback interfaces.

2nd place CPES Hackathon$74 Arduino rehab prototype~20 Hz Web Serial pipeline600 volunteers55% data-fetching complexity reduction200+ Jira tickets
signal-flow/control-system sketchauto · 1/3
Raw pressure is calibrated into a calmer cueraw pressurecalibratedead zone+ offsetcueshift / centerfeedback stays calmerno fake metricsshow the transformationdebug surface stays visible
ReBalance calibration loopRaw pressure is noisy; the product challenge is turning it into calm feedback.

Three layers, one feedback loop.

The portfolio works best when it shows the whole path from physical input to reliable human action.

layer 01

Hardware input

Sensors, boards, switches, and the physical constraints that make software honest.

FSR pressure board · Basys3 switches

layer 02

Software interpretation

Calibration, state machines, debouncing, and API boundaries that turn raw events into decisions.

dead zone · release timing · access rules

layer 03

Human-facing feedback

Interfaces that keep the system state visible without forcing people to chase noise.

calmer cue · enriched workflow payloads

raw datacalibrationcontrol loopshuman feedbackdebug notes

ReBalance turns unstable sensor input into feedback someone can act on.

Problem
Raw pressure signal jitters
Method
Calibrate before presenting the cue
Output
Shift left / centered / shift right
Before calibration

Jittery raw pressure makes the cue feel nervous, even when the user is close to centered.

After calibration

Dead-zone and offset logic preserve debug data while presenting a calmer correction.

BLBrian Li · Systems Lab

Working calibration demo

Pressure in. Correction out.

Slider input: calibrated pressure

Move pointer across the board or use the slider.

left footdead zoneright foot
correction thresholdcorrection threshold
Left pressure52%
Right pressure48%

Raw jitter strip

Calibrated score

96CENTEREDOffset +2 · settled

Move pointer across the board or use the slider. The raw signal is allowed to be noisy; the cue stays calmer.

How I work when reality gets messy

01Prototype under constraints

02Debug before polishing

03Explain tradeoffs clearly

Useful feedback for real people.

Brian Li portrait outdoors in Hawaii light

Hawaii shaped how I think about technology: useful systems should be understandable, local, and human.

I'm a Hawaii-born computer engineering student creating and exploring technology one line, circuit, and prototype at a time.

My projects start with a practical purpose, then move through planning, testing, and repeated refinement until the system communicates clearly.

That shows up in projects where technology has to be useful to people outside the lab: Digital Ready Hawaii seniors learning technology, volunteers coordinating support, patients needing calm feedback, and local communities.

Artifacts over abstractions.

Preview cards show what was built, what kind of evidence exists, and why the work matters.

Evidence is shown as project facts, roles, artifacts, and process notes - not invented impact numbers.

case file 01

Hardware-software - Calibration file

Hackathon prototype

sensor -> calibration -> cuecentered
L 52%R 48%

RAW pressure / 20 Hz stream / 4 FSR sensors

ReBalance

A balance feedback system using FSR sensors and Web Serial updates to turn noisy pressure data into a readable correction cue.

Role: Hardware/software developer

FSR sensors, Web Serial stream, calibration, feedback UI

note: learned to separate noisy input from readable feedback

View case study
FSR sensorsWeb Serialcalibration
case file 02

Marketplace - Trust and verification system

Active MVP foundation

teamsponsorverifylistingreview

Marketplace / verification / Supabase / CI gates

Spontus

A college sports sponsorship marketplace built around verified teams, verified sponsors, structured listings, and application workflows.

Role: Co-founder / product engineer

Domain model, verification workflow, Supabase schema, CI/security gates

note: turned marketplace ambiguity into trust, data, and workflow systems

View case study
Next.jsSupabaseMarketplaceVerificationCI
case file 03

FPGA - Digital logic file

Course/lab deployment

clk scan / debounced inputcycle
1wait
2press
3release
4update

Cycles 0-9 like a scanned seven-segment display; hover to scrub WAIT -> PRESS -> RELEASE -> UPDATE.

Flip That Digit

A Basys3 game built around OTTER MCU constraints, seven-segment output, and precise debounce/release handling.

Role: Embedded game logic + hardware deployment

SystemVerilog + Assembly on Basys3 / OTTER MCU

note: learned how release timing shapes reliable state transitions

View case study
SystemVerilogAssemblyBasys3
case file 04

Backend - Operations workflow

Nonprofit production contribution

volunteereventroleapi

CRUD / permissions / MongoDB / coordination

Operation Surf

Backend and data workflows for nonprofit operations supporting volunteer coordination, access-aware CRUD, and API-driven workflows.

Role: Backend/API workflow contributor

MongoDB/Mongoose, Next.js, API workflows, permissions

note: learned how backend structure affects real-world coordination

View case study
volunteer opsMongoDBaccess-aware CRUD
case file 05

IDE extension - Learning loop

Hackathon prototype

explainquizgradeadapt

local IDE loop / validated output / adaptive engine

Vybe Tutor

A local-first VS Code extension that turns AI-generated code into learning opportunities: explanations, quizzes, and an adaptive engine.

Role: Contributor - adaptive engine & MCP integrations

Gemini-driven explanations, Zod-validated outputs, deterministic adaptive engine, MCP doc-enricher

note: privacy-first grading and deterministic difficulty transitions

View case study
TypeScriptVS Code ExtensionGeminiZod

Raw engineering process stays visible.

A teaser for writing that reads like a lab notebook, not a polished victory lap.

Entry 001 · ReBalance calibration failure

failurecalibrationcalmer cue
When the signal got noisy, I stopped tuning the UI and went back to the measurement model.
  1. 01Context

    Raw pressure values drifted enough to make the correction cue feel nervous.

  2. 02Decision

    The fix was not more visual polish — it was calibration: separate noisy input from readable output.

  3. 03Next test

    Next pass: tune dead zone, expose raw strip, keep the user cue calm.

Contact