Software engineer · MCP & agent infrastructure · Irvine, California
Backend and ML infrastructure: MCP servers and agent tool-routing, document ingestion pipelines, typed clients for undocumented APIs, and evaluation harnesses for machine-learning experiments. TypeScript, Python, Rust, PostgreSQL.
Find agendas, minutes, and staff reports from California public agencies.
In developmentMy research and operations platform for tools, knowledge, and AI agents.
Sign-in requiredCity of Irvine meetings, agendas, minutes, videos, and council member profiles
Contact info and public comment details for all 34 Orange County city councils
34 citiesUC Irvine student government meetings, attendance, and voting records
Tree metabolomics data filtering and analysis report
Research and engineering write-ups, grouped by topic. Open a group to explore.
A seven-arm ablation on two published corpus-design interventions, run against real cited prose. One survived, one was inert under every condition its source specifies. Three of five results are nulls, and they are the reason the other two mean anything.
A serving design assumed several separately trained compartments could be wired into one request. Measuring it first put the naive limit at two, and the run's own controls caught a result that read the right way and was not. A composition-aware recipe then moved four-compartment retention from −45.4% to +44.6%.
One model and one set of weights produced a different answer on every NVIDIA card I ran it on. Owning the arithmetic order instead of the vendor library's made the output byte-identical across all nine: five architecture generations, two operating systems, one SHA-256.
Three ordinary training decisions compose into publishing a test score for a model that never leaves the machine. The manifest carried a validation loss from epoch 17 beside a test loss from epoch 20, neither labelled, and nothing errored. Measured, fixed, and confirmed on the cluster with both branches exercised.
Eight research projects run on a shared university GPU cluster through one tool that will not let a job be built if it would fail, and can answer afterwards which job produced which artifact. Preflight that cannot be skipped, a budget the cluster itself does not enforce, and three failure conditions that look like health.
My seventeen research wikis share one audit engine, and each declares which kind of proof its citations owe: a PDF hash, a captured-page hash, a resolving vault query, or a git blob. A claim that cannot be checked that way fails the write, in the transaction and in the tool an agent calls.
I reverse-engineered the private protocol of an online game that publishes no documentation, then built an instrument that keeps proving the model is still right. It has since caught three of its own conclusions being wrong, including the ending of its best session: 84 kills, 0 deaths, 149 minutes.
A game ships as an obfuscated Java binary whose class names change between releases. I inject code into its running JVM to read real state and issue real orders, with no pixels and no synthetic input, and I made runs bit-identical per seed so a better strategy can be told apart from a lucky map.
Many AI sessions coordinate through one append-only board, and the board refuses what it cannot trust: a label that is not yours, a closure with no result, a delivery claim with no commit, a session id one keystroke from a real one. A surface that records is a log. One that refuses is infrastructure.
A proxy that had only ever spoken to machines now renders a page for a person, on its own hostname, and every safety question it answers has exactly one implementation. The question that briefly had two answers cost a 403 naming no cause, and the fix is a guard that is itself guarded against gaining an unchecked fourth input.
Thirteen services and twenty-two shared libraries in one repository, held together by 47 architecture rules that fail the build, so my design decisions are enforced by CI rather than remembered in review. I wrote them across Python and Rust, because an invariant that holds in one language is not one.
I built a risk-prediction service for loan covenants, then generalised it so a new subject is a registration rather than a fork. Two more domains have since been added without editing the shared training, explainability or streaming machinery at all. Twelve model backends behind one interface, trained on 40 real public datasets.
I wrote gradient boosting from scratch in numpy, ported it to a Rust core, and then deleted the numpy version, roughly 10k lines, because two implementations can disagree. The first one was the oracle I checked the port against; scaffolding comes down.
Nine merged pull requests: Python type annotations, a POSIX socket-timeout fix, and test coverage. Nine of twelve attempted, with the three that did not land in the distributed-training path.