Projects
11 projectsThings I've built or experimented with: what I tried, what I found, what surprised me.
Anchor stopped my agent from skipping declared steps. Ratchet came from the next question: after an interrupted or overlapping run, could I prove what happened and restart without making it worse?
A technical look at the small execution runtime I built for overlapping and interrupted agent workflows: ownership, effect recovery, verified completion and the limits of a local alpha.
A Gaussian splat can reproduce a place convincingly while knowing almost nothing about its identity, scale or behavior. This article separates reconstruction, visual readiness, operational readiness and simulation readiness—and defines the boundary SplatStage is designed to cross.
SplatStage turns a Gaussian reconstruction into a versioned editing workflow, exports the selected PLY as an OpenUSD Gaussian ParticleField, and composes it with replaceable engineered assets. The hardest bug was at the seam between editing and export.
One Garden scene made the promises and gaps in SplatStage measurable: 2.07 million Gaussians removed, an edited OpenUSD particle field, three composed assets, a dependency-complete stage—and no measured scale, colliders or external runtime proof.
ReconStudio turns camera media into Gaussian splats and OpenUSD through a browser and job API. I built it to expose reconstruction stages, retain experiment evidence and test where on-demand GPU execution fits. Part 2 of a three-part series.
I built ReconStudio, then used 24 job records across six scenes to test its evidence. Metric bugs, repeated runs and paired-frame comparisons changed what I could claim about training, capture and GPU capacity. Part 3 of a three-part series.
A repeatable agent workflow kept skipping different steps on different runs. The fix wasn't a stronger prompt; it was moving the plan into a DAG and letting deterministic code control sequence and verification.
A month ago I drew a five-stage loop for a robot training center and admitted most of it was an educated guess I hadn't tested. So I built the loop as a real, orchestrated pipeline on one GPU and carried two tasks around it — a pole that balances by trial and error, and a Franka arm that learns to stack cubes by copying demonstrations. This is the environment, the stack, the architecture, and what actually ran. Part 1 of two.
Running the training loop for real surfaced one concept the diagram doesn't capture: the same five stages take two different shapes depending on how the robot learns — by trial and error (reinforcement learning) or by copying demonstrations (imitation). This part is the mechanism behind that fork, grounded in the two tasks I ran, plus the open questions the build left unproven. Part 2 of two.
A browser-based USD viewer, RTX-rendered server-side and streamed over WebRTC, built to see if the library-first pitch holds up under real interactivity.