Research
Current work ranges from programming languages and cyberphysical
control to information geometry, emergent computation, signal
reconstruction, and acoustic localization. Across those domains, the
recurring problem is how to make structure and behavior legible when
data, environments, or evidence are incomplete.
Most of this work is open-source. If any of it overlaps with your
own work,
reach out.
Results, including their limits, are written up in the
research notes.
OCaml In progress
A small programming language for running, reviewing, simulating, and trusting programs written by models and reviewed by people. Every function signature carries an effect row, so one line tells you whether code can reach the network or filesystem, and nothing runs until each capability is granted explicitly. Effect handlers swap the outside world for a scripted fake, a recorded trace, or a probability model, so the same code runs unchanged in production and in test.
The bet: when most code is written by machines, the humans reviewing it need the language itself to answer what a program can touch and how certain it is, instead of relying on comments, logs, and careful reading. Version 0.1 works end to end as a research prototype, with an interpreter, type checker, standard library, and test framework.
Baseplate
Cyberphysical control Go Private · in development
A control system and reference architecture for operations that mix machines, sensors, people, and materials. The organizing rule: deterministic control and safety stay local to machine controllers and safety systems, while platform services coordinate, authorize, plan, and observe, and never replace a controller's permissives or interlocks. Service contracts require durable state, idempotent commands, and defined behavior under retries, partial failure, and degraded clocks.
Software that coordinates physical operations usually either treats the plant like a web app or disappears into a vendor stack. Baseplate is an attempt to write the boundary rules down precisely enough to build against: what a service may decide, what only a controller may do, and what counts as evidence that work actually happened.
Private repository
Python Library
Python library implementing KL-rate holonomy estimators, entropy production estimation, and arrow-of-time detection. Reformulates existing information-geometric ideas about irreversibility into a usable tool with CLI and demos across audio, images, video, sensor data, and financial time series.
If you work with sequential data and want to measure directional asymmetry (does this process look different forwards vs. backwards?), this gives you a geometric way to quantify that. The arrow-of-time demos show it working across very different data types.
Python · Jupyter Library
A Python research framework for embodied agents controlled by local fields rather than a learned policy network or centralized planner. From a limited view of their surroundings, agents maintain Bayesian belief fields for targets and hazards. A linearly solvable Markov decision process turns those beliefs, along with reward, effort, memory, pain, and information gain, into a value field and action policy. The system adapts while it runs and requires no training episodes.
The project tests how far inspectable field dynamics can support perception, memory, planning, adaptation, and safety without a conventionally trained policy. Current experiments cover partial observation, obstacle avoidance, reward reversal, safety barriers, and performance as environments grow.
CoCore
Signal reconstruction Python Private
Exploring graph-based approaches to reconstructing coherent spatial fields from sparse, noisy sensor data. The graph structure handles three related problems: filtering measurement noise, identifying which sensors are drifting or broken, and interpolating between sensors to recover the full spatial picture.
Potentially applicable to environmental monitoring, infrastructure health assessment, or any domain with irregular sensor placement. The graph formulation means the approach doesn't require a uniform grid, which is where most classical interpolation methods start.
Private repository
Python Library · working prototype
Library for locating impulsive acoustic events (gunshots, explosions, fireworks) by time-difference-of-arrival from recordings made at known positions. It picks the event in each audio track, fits the source position with a 95% confidence ellipse, and flags ambiguous geometry, blocked lines of sight, and recordings whose clocks are too far apart to localize.
Built with forensic and public safety uses in mind. Bystander video often records an incident without showing where a sound came from. The recordings need shared or roughly known clocks, because one event cannot both locate a source and line up recordings whose clocks disagree. When the clocks are too far apart, the tool reports that it cannot localize the event.