DevOps Engineer · Pacific Northwest

I build, ship, and run software end to end.

DevOps engineer by day. On my own time, I build products and the platform that runs them.

LinkedInEmail

Now buildingMeet Lumi, my household AI agentRuns at home, on our own hardware

Products

Click a card to visit the site
Relief homepage

Relief

live

bathroom-finder.com

Find and review public bathrooms nearby. Crowd-sourced, map-first, and moderated.

  • Map-first UI with client-side clustering (MapLibre + Supercluster)
  • Community submissions with an admin moderation and reports queue
  • OpenTelemetry tracing into Azure Monitor; Playwright and Vitest suites
  • Next.js
  • Drizzle
  • PostgreSQL
  • MapLibre
  • Azure
The Puzzly homepage

thepuzzly.com

Five daily puzzles in one short session: Connections, Timeline, One Line, Who Said It, and Sudoku.

  • Daily reset with saved streaks
  • A single-container app on shared infrastructure: shared Postgres, registry, and Key Vault
  • Scaffold extracted into a reusable template that seeds new projects
  • TypeScript
  • Node.js
  • PostgreSQL
  • Azure Container Apps
StoryNapse homepage

storynapse.com

A writing workspace for fiction authors, API-first with sync across sessions.

  • Rich-text editor built on TipTap, with PostgreSQL as the single source of truth
  • Turborepo monorepo with a one-command Dockerized dev environment
  • React
  • TypeScript
  • Express
  • PostgreSQL
  • Turborepo
Lumi, a small character in a brown bear-ear hoodie

Side project · runs at home · private

Meet Lumi, our household AI agent

Lumi is a personal AI agent that belongs to my household, not to a vendor. It runs on my own hardware, chats from our phones, plans the family calendar, writes the morning brief, and remembers what matters, with every action visible and anything risky waiting for my approval.

I'm now extracting it into homeagent: the same agent with every name, account, and address turned into a setting, so any household can install it with Docker Compose and own its own agent.

Under the hood

One platform, one set of commands

Every project lives in the same layout and runs through the same operations script. Deploy, restart, back up, and health checks work identically everywhere, so nothing needs remembering four months later.

That uniformity is also what makes AI agents useful here: an agent can operate any project without special cases, because the commands and exit codes never change.

  1. 01Every projectbindings.shabout 35 lines each: only what differs
  2. 02One scriptops.sh969 lines, byte-identical in every repo
  3. 03Same verbsup · health · doctor · backup-dbthe same command in any project
  4. 04Exit codes0 ok · 3 n/a · 5 unhealthya person or an AI agent acts on the result
$ md5 -q /opt/apps/*/.cicd/ops.sh \
    | sort | uniq -c
  24 ef59dcab591c2c2468b2729fe61a69ea

Let's talk.

I'm interested in DevOps, platform, and infrastructure roles where building the product and running it are the same job.

LinkedInEmail