Computer science at Notre Dame ’29. Security Engineering at Lila Sciences.
I like software with narrow boundaries, visible failure modes, and a reason to exist.
I build close to the sharp edges: malformed packets, private messages, terminal
workflows, rolling-shutter cameras, unreliable links, and human operators.
The through-line is simple: understand the system, reduce the attack surface,
then ship the unglamorous parts that make the thing dependable.
python go rust typescript c next.js postgres sqlite docker linux git
mac messages mcp · python, sqlite, mcp
A local-first bridge between coding agents and macOS Messages. Read-only
database access, deliberate attachment disclosure, and guarded send actions.
netsift · python, networking
A dependency-free PCAP and PCAPNG explorer built for terminal investigations:
defensive protocol decoding, deterministic output, filters, and fuzzed parsers.
treecat · go, tui
Turns a codebase into compact, syntax-highlighted context. Ships through
Homebrew and native packages for macOS, Linux, and Windows.
pixelchangecheck · rust, quic
Screen sharing that transmits changed regions instead of whole frames, with
direct and relayed transport, adaptive quality, and native or browser viewing.
stamina timer · next.js, postgres
A production training PWA with guided sessions, analytics, expiring shares,
row-level authorization, and an optional authenticated AI coach.
- Local first when the data is personal.
- Corrupt inputs and dropped connections are product behavior, not edge trivia.
- Tests, packaging, release automation, runbooks, and threat models are part of shipping.
Every graphic is stored in this repository. The contribution, streak, language,
calendar, and heading SVGs are drawn by a scheduled action
from GitHub’s own data, then committed only when their contents change.
Nothing depends on a third-party stats card. The animation is SMIL inside the
SVGs because GitHub strips scripts from profile READMEs; light and dark themes
are handled inside each file for the same reason.




