/ owen l [ 2026 ]
currently
ballbot sim — on pause, picking it back up soon
shipped
steno keyboard, v1
working in
CAD · firmware · python
loading model — steno-keyboard.3mf
steno keyboard — CAD, live in browser
drag to orbit · scroll to zoom
steno keyboard — full assembly, rendered directly from the CAD export. orbit to inspect.
projects
  • shipped
  • in progress
  • ongoing
  • planned

what i'm building

A Python/MuJoCo simulation of a robot that balances on a ball using omniwheels. I wrote the physics and the PID control loop myself rather than starting from a prebuilt environment, so the balance behavior is mine to debug and mine to explain.

what broke / what changed

Most of the difficulty was in the parts that are easy to get subtly wrong: tuning the PID gains without the loop oscillating, getting the ball-and-omniwheel contact model to behave like the real thing instead of a rough approximation of it, and catching integrator windup before it destabilized the loop under a large disturbance. Each of those forced me to actually understand the control theory rather than copy gains from an example.

click + drag to nudge, release to let the PID loop recover
tilt0.0°
ball velocity0.00
PID output0.00

what i was trying to do

“I chose a steno layout because it forced a design problem I had not solved before. The key geometry is unlike a standard board, which meant modelling every keycap from scratch rather than adapting an existing profile.”

what broke

“The mechanical side went through many printed revisions before the tolerances held; fit and print technique were resolved by iteration rather than calculation. The electronics survived intact — no component lost — which I attribute to the time spent verifying the board in CAD before ordering.”

where i am now

“Each revision of the CAD is measurably better than the last, mechanical and PCB both. I would rather state that plainly than present the work as more finished than it is.”

ongoing

Mechanical parts and PCB layouts, worked on alongside the two projects above rather than as a separate line of work.

planned

This one doesn't have a scope or a start date yet. When it does, what it is and when it starts will replace this note — not before.

education
  1. coursework

    AP Computer Science

  2. self-taught

    Roblox development — modeling & scripting

  3. self-taught

    Hardware, CAD & firmware — steno keyboard

    repo ↗
about
“I ride and I lift. Both reward consistency over intensity, and both are work I do for its own sake rather than for a result I can show anyone.”

— outside of building

“I do what the work requires, without pretending that how I feel about it is irrelevant to how well it gets done.”

— how i work

“I work across the whole stack of a physical thing — the mechanical CAD, the board, the firmware, and the control loop that makes it stand up. Most of what I know, I learned by breaking the previous version of it.”

contact

for roblox studios, freelance work, or anything else — this goes straight to my inbox.

currently — loading…