Software engineer, machinist, student pilot.

Hello! I'm a Principal Software Engineer at Genentech, tech lead for Orchestra — our LIMS for in vitro workflows — and the broader In Vitro Workflows domain it's part of. I work closely with the scientists who depend on our software, then build lab software that doesn't just work — it fits the way scientists actually work, so researchers can move faster and trust the data they generate. Before Genentech, I moved from big tech to biotech: Apple and Google, then GRAIL and Invitae.

Co-founded

noctune icon

noctune

TECHNICAL CO-FOUNDER

AI for veterinary medicine. Vets record a visit from the iPhone app or browser; noctune returns a structured SOAP note in under a minute, drafts client discharge messages, carries context forward from prior visits, and flags tense encounters for follow-up. As technical co-founder, I built its high-throughput distributed system on AWS, spanning the iPhone and web apps, platform API, billing, and docs. Clinical direction comes from a practicing UC Davis–trained veterinarian.

Noctune web app showing imported SOAP template proposals in the template editor
Canairy icon

Canairy

TECHNICAL CO-FOUNDER

Referral intelligence and care-journey orchestration for healthcare practices. Canairy turns inbound faxes, PDFs, emails, and API submissions into structured referrals for staff review, tracks each patient journey across a connected care network, and gives health systems centralized intake, routing, and reporting across member practices. Its MCP endpoint lets trusted provider agents submit referrals directly under signed BAAs.

Canairy interface showing a faxed referral beside an AI-extracted patient note and referral recommendation

Nana

nana: baby tracker

Private. Shared. Effortless.

Let nana remember.

A little less to carry.

Know the last feed, how long they’ve slept, and what’s likely next—without reconstructing the day. Built for tired parents and everyone sharing the care.

Download on the App Store

Nana walkthrough

Your baby’s data is yours.

Local-first, with sharing through iCloud. No Nana account, no developer-run backend, no analytics, and no tracking.

Made for the handoff.

Every caregiver has a full local copy. Whoever’s on duty can take over the timer, so the next shift starts in the know.

One purchase. The whole family.

Invited caregivers join free. Export your data anytime. No subscription, no lock-in.

Local-first · A database on every device
I built Nana around a local SQLite database backed by GRDB, with reads and writes independent of network availability. Each caregiver maintains a local replica; changes and their pending-sync records commit in the same transaction through a durable outbox.
Private by architecture · CloudKit replication
A custom sync coordinator uses separate CKSyncEngine instances for private and shared CloudKit databases, with a record zone per baby and CKShare-based family access. Data syncs through the family’s iCloud accounts, without a developer-operated data backend or third-party behavioral analytics.
Deterministic merges · Explicit conflict precedence
Independently edited care-event fields merge using per-field clocks, while timer start and end times stay atomic. Other records use last-writer-wins with deterministic tie-breaking. Timestamped deletion tombstones take precedence over older edits, and upload acknowledgments only clear the outbox generation actually sent, preserving edits made during an in-flight sync.

Delayta

Delayta pixel art: Caltrain, VTA, and BART trains beside the Bay at sunset. Your commute, decoded.

Three apps. One better commute.

  • Caltrain

    Real-time Caltrain tracker and route planner — live departures, schedules, fares, and service alerts.

    Download on the App Store
  • VTA

    VTA light rail map and route planner — reported and estimated train positions, schedules, fares, and service alerts.

    Download on the App Store
  • BART

    BART schedules, route planning, service alerts, and train tracking across the Bay Area.

    Download on the App Store
Delayta Caltrain app showing train positions, a Palo Alto to Millbrae route, fares, and upcoming departures
Delayta: Caltrain · Live map and departures

Shared architecture

I built a shared transit platform powering three native iOS apps for Caltrain, VTA, and BART: offline-first schedules and route planning, enriched with realtime 511.org vehicle positions, trip updates, and service alerts.

delayta-core · Shared Swift framework
Agency-independent GTFS parsing, transit models, and train-position interpolation. A protocol-based configuration layer supplies each system’s time zone, route mappings, and station metadata, keeping agency-specific behavior separate from the reusable engine.
delayta-proxy · Scalable realtime delivery
Cloudflare Workers relay 511.org telemetry while keeping API keys server-side. Per-agency Durable Objects cache feeds for 60 seconds and coalesce concurrent misses into one upstream request per endpoint, decoupling upstream load from client count. Recent cached data remains available during upstream failures.
Bundled + cloud GTFS · Updates without an app release
Apps launch with bundled schedules and refresh from versioned feeds published to R2, with manifests in Workers KV. The Swift feed store verifies file sizes and SHA-256 digests, installs updates atomically, and selects between bundled and downloaded data by validity and recency—preserving offline access and the previous feed if an update fails.

More apps

  • Banana Split app icon
    Banana SplitA private, offline-first expense splitter with on-device receipt scanning and iCloud sync.
  • compressNG app icon
    compressNGCompress photos and videos to an exact target file size — entirely on-device, with no uploads, ads, or tracking.
  • Wheyts app icon
    WheytsBarbell plate calculator and strength tracker — log workouts, estimate 1RM, and analyze bar path from lift videos.

Open source

Adversarial Review

I built a multi-model code-review plugin for Claude Code and Codex that makes findings survive an evidence-backed challenge before they become fixes. It combines repository checks, adversarial agent passes, and cross-provider synthesis in one review workflow.

View on GitHub
Risk-based orchestration
Lint, type checks, builds, and tests establish a shared evidence baseline. A weighted escalation score selects review depth; Optimizer agents identify issues first, then Skeptic agents challenge the merged findings using command output.
Provider-neutral artifact protocol
Claude and Codex reviewers exchange structured findings and verdicts through files, with explicit scope, severity, confidence, and evidence. Provider-specific orchestration stays separate from the shared contract; the lead owns synthesis and each reviewer writes only its assigned artifacts.
Consensus-gated fixes
Only high-confidence, consensus Critical and Major findings qualify for automatic fixes. A verification loop is capped at two rounds, and persistent reports retain disputed and deferred findings alongside the final outcome. GitHub PR and GitLab MR feedback enters the same pipeline.

Adversarial Review demo

  • YggdrasilHigh-density agent orchestrator — manages context, tasks, and locking.
  • sleepypodPod hardware control, scheduling, and biometrics, with an iOS app and rotary dial integration.
  • Lichess AnalyzerOne-click Chrome extension to import chess.com games into lichess.